Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 231a47f

Browse files
author
Alexey Naumov
committed
#88: Fix tests failing for updated Loadable
1 parent b1ad1f4 commit 231a47f

File tree

5 files changed

+30
-15
lines changed

5 files changed

+30
-15
lines changed

‎CountriesSwiftUI/Utilities/CancelBag.swift‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,19 @@ import Combine
1010

1111
final class CancelBag {
1212
fileprivate(set) var subscriptions = Set<AnyCancellable>()
13+
private let equalToAny: Bool
14+
15+
init(equalToAny: Bool = false) {
16+
self.equalToAny = equalToAny
17+
}
1318

1419
func cancel() {
1520
subscriptions.removeAll()
1621
}
22+
23+
func isEqual(to other: CancelBag) -> Bool {
24+
return other === self || other.equalToAny || self.equalToAny
25+
}
1726
}
1827

1928
extension AnyCancellable {

‎CountriesSwiftUI/Utilities/Loadable.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ extension Loadable: Equatable where T: Equatable {
104104
switch (lhs, rhs) {
105105
case (.notRequested, .notRequested): return true
106106
case let (.isLoading(lhsV, lhsC), .isLoading(rhsV, rhsC)):
107-
return lhsV == rhsV && lhsC===rhsC
107+
return lhsV == rhsV && lhsC.isEqual(to:rhsC)
108108
case let (.loaded(lhsV), .loaded(rhsV)): return lhsV == rhsV
109109
case let (.failed(lhsE), .failed(rhsE)):
110110
return lhsE.localizedDescription == rhsE.localizedDescription

‎UnitTests/Interactors/CountriesInteractorTests.swift‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ final class LoadCountriesTests: CountriesInteractorTests {
6060
countries.updatesRecorder.sink { updates in
6161
XCTAssertEqual(updates, [
6262
.notRequested,
63-
.isLoading(last: nil, cancelBag: CancelBag()),
63+
.isLoading(last: nil, cancelBag: .test),
6464
.loaded(list.lazyList)
6565
], removing: Country.prefixes)
6666
self.mockedWebRepo.verify()
@@ -93,7 +93,7 @@ final class LoadCountriesTests: CountriesInteractorTests {
9393
countries.updatesRecorder.sink { updates in
9494
XCTAssertEqual(updates, [
9595
.notRequested,
96-
.isLoading(last: nil, cancelBag: CancelBag()),
96+
.isLoading(last: nil, cancelBag: .test),
9797
.failed(error)
9898
], removing: Country.prefixes)
9999
self.mockedWebRepo.verify()
@@ -126,7 +126,7 @@ final class LoadCountriesTests: CountriesInteractorTests {
126126
countries.updatesRecorder.sink { updates in
127127
XCTAssertEqual(updates, [
128128
.notRequested,
129-
.isLoading(last: nil, cancelBag: CancelBag()),
129+
.isLoading(last: nil, cancelBag: .test),
130130
.failed(error)
131131
], removing: Country.prefixes)
132132
self.mockedWebRepo.verify()
@@ -163,7 +163,7 @@ final class LoadCountriesTests: CountriesInteractorTests {
163163
countries.updatesRecorder.sink { updates in
164164
XCTAssertEqual(updates, [
165165
.notRequested,
166-
.isLoading(last: nil, cancelBag: CancelBag()),
166+
.isLoading(last: nil, cancelBag: .test),
167167
.loaded(list.lazyList)
168168
], removing: Country.prefixes)
169169
self.mockedWebRepo.verify()
@@ -199,7 +199,7 @@ final class LoadCountriesTests: CountriesInteractorTests {
199199
countries.updatesRecorder.sink { updates in
200200
XCTAssertEqual(updates, [
201201
.notRequested,
202-
.isLoading(last: nil, cancelBag: CancelBag()),
202+
.isLoading(last: nil, cancelBag: .test),
203203
.failed(error)
204204
], removing: Country.prefixes)
205205
self.mockedWebRepo.verify()
@@ -236,7 +236,7 @@ final class LoadCountryDetailsTests: CountriesInteractorTests {
236236
details.updatesRecorder.sink { updates in
237237
XCTAssertEqual(updates, [
238238
.notRequested,
239-
.isLoading(last: nil, cancelBag: CancelBag()),
239+
.isLoading(last: nil, cancelBag: .test),
240240
.loaded(data.details)
241241
], removing: Country.prefixes)
242242
self.mockedWebRepo.verify()
@@ -270,7 +270,7 @@ final class LoadCountryDetailsTests: CountriesInteractorTests {
270270
details.updatesRecorder.sink { updates in
271271
XCTAssertEqual(updates, [
272272
.notRequested,
273-
.isLoading(last: nil, cancelBag: CancelBag()),
273+
.isLoading(last: nil, cancelBag: .test),
274274
.failed(error)
275275
], removing: Country.prefixes)
276276
self.mockedWebRepo.verify()
@@ -307,7 +307,7 @@ final class LoadCountryDetailsTests: CountriesInteractorTests {
307307
details.updatesRecorder.sink { updates in
308308
XCTAssertEqual(updates, [
309309
.notRequested,
310-
.isLoading(last: nil, cancelBag: CancelBag()),
310+
.isLoading(last: nil, cancelBag: .test),
311311
.failed(error)
312312
], removing: Country.prefixes)
313313
self.mockedWebRepo.verify()
@@ -343,7 +343,7 @@ final class LoadCountryDetailsTests: CountriesInteractorTests {
343343
details.updatesRecorder.sink { updates in
344344
XCTAssertEqual(updates, [
345345
.notRequested,
346-
.isLoading(last: nil, cancelBag: CancelBag()),
346+
.isLoading(last: nil, cancelBag: .test),
347347
.loaded(data.details)
348348
], removing: Country.prefixes)
349349
self.mockedWebRepo.verify()

‎UnitTests/Interactors/ImagesInteractorTests.swift‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ final class ImagesInteractorTests: XCTestCase {
5757
image.updatesRecorder.sink { updates in
5858
XCTAssertEqual(updates, [
5959
.notRequested,
60-
.isLoading(last: nil, cancelBag: CancelBag()),
60+
.isLoading(last: nil, cancelBag: .test),
6161
.loaded(self.testImage)
6262
])
6363
self.verifyRepoActions()
@@ -76,7 +76,7 @@ final class ImagesInteractorTests: XCTestCase {
7676
image.updatesRecorder.sink { updates in
7777
XCTAssertEqual(updates, [
7878
.notRequested,
79-
.isLoading(last: nil, cancelBag: CancelBag()),
79+
.isLoading(last: nil, cancelBag: .test),
8080
.failed(error)
8181
])
8282
self.verifyRepoActions()
@@ -95,7 +95,7 @@ final class ImagesInteractorTests: XCTestCase {
9595
image.updatesRecorder.sink { updates in
9696
XCTAssertEqual(updates, [
9797
.loaded(self.testImage),
98-
.isLoading(last: self.testImage, cancelBag: CancelBag()),
98+
.isLoading(last: self.testImage, cancelBag: .test),
9999
.failed(error)
100100
])
101101
self.verifyRepoActions()

‎UnitTests/Utilities/LoadableTests.swift‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ final class LoadableTests: XCTestCase {
6161
]
6262
let expect: [Loadable<String>] = [
6363
.notRequested,
64-
.isLoading(last: nil, cancelBag: CancelBag()),
65-
.isLoading(last: "5", cancelBag: CancelBag()),
64+
.isLoading(last: nil, cancelBag: .test),
65+
.isLoading(last: "5", cancelBag: .test),
6666
.loaded("7"),
6767
.failed(NSError.test)
6868
]
@@ -100,3 +100,9 @@ final class LoadableTests: XCTestCase {
100100
XCTAssertEqual(ValueIsMissingError().localizedDescription, "Data is missing")
101101
}
102102
}
103+
104+
extension CancelBag {
105+
static var test: CancelBag {
106+
return CancelBag(equalToAny: true)
107+
}
108+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /