Skip to content

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)