From 58f851c4e2b40798712bfffe9782c10856afd628 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Sat, 24 Sep 2022 01:11:53 +0200 Subject: [PATCH] Destroy messenger when backup restoration fails --- .../xx-messenger/Sources/RestoreFeature/RestoreFeature.swift | 1 + .../Tests/RestoreFeatureTests/RestoreFeatureTests.swift | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift index c941a8f9..d1872840 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 88bf551f..4e55f78b 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 -- GitLab