diff --git a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift index c941a8f9c6087f2533309f7223b42f5ac487e7b0..d1872840470448de3dccfb2e9af2b2f4ad135324 100644 --- a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift +++ b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift @@ -141,6 +141,7 @@ public let restoreReducer = Reducer<RestoreState, RestoreAction, RestoreEnvironm )) return .success(.finished) } catch { + try? env.messenger.destroy() return .success(.failed(error as NSError)) } } diff --git a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift index 88bf551f47b1b30257c6d35c4374a8a2bf66d75d..4e55f78bf14a04fe0aea7885f2f86d3783e6b04c 100644 --- a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift +++ b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift @@ -167,6 +167,8 @@ final class RestoreFeatureTests: XCTestCase { struct Failure: Error {} let failure = Failure() + var didDestroyMessenger = 0 + let store = TestStore( initialState: RestoreState( file: .init(name: "name", data: "data".data(using: .utf8)!) @@ -178,11 +180,14 @@ final class RestoreFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate store.environment.messenger.restoreBackup.run = { _, _ in throw failure } + store.environment.messenger.destroy.run = { didDestroyMessenger += 1 } store.send(.restoreTapped) { $0.isRestoring = true } + XCTAssertEqual(didDestroyMessenger, 1) + store.receive(.failed(failure as NSError)) { $0.isRestoring = false $0.restoreFailure = failure.localizedDescription