From 52851d6de1d600ef485565ebeaf9a610b7488560 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 19 Oct 2022 11:06:13 +0200 Subject: [PATCH] Start ReceiveFileHandler when app starts --- .../AppFeature/AppEnvironment+Live.swift | 3 ++ .../Sources/AppFeature/AppFeature.swift | 6 +++ .../AppFeatureTests/AppFeatureTests.swift | 52 +++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift index c4ff9b27..62ea9c13 100644 --- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift +++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift @@ -113,6 +113,9 @@ extension AppEnvironment { messenger: messenger, db: dbManager.getDB ), + receiveFileHandler: .live( + messenger: messenger + ), backupStorage: backupStorage, log: .live(), mainQueue: mainQueue, diff --git a/Examples/xx-messenger/Sources/AppFeature/AppFeature.swift b/Examples/xx-messenger/Sources/AppFeature/AppFeature.swift index 7796f592..56f692c6 100644 --- a/Examples/xx-messenger/Sources/AppFeature/AppFeature.swift +++ b/Examples/xx-messenger/Sources/AppFeature/AppFeature.swift @@ -50,6 +50,7 @@ struct AppEnvironment { var messenger: Messenger var authHandler: AuthCallbackHandler var messageListener: MessageListenerHandler + var receiveFileHandler: ReceiveFileHandler var backupStorage: BackupStorage var log: Logger var mainQueue: AnySchedulerOf<DispatchQueue> @@ -66,6 +67,7 @@ extension AppEnvironment { messenger: .unimplemented, authHandler: .unimplemented, messageListener: .unimplemented, + receiveFileHandler: .unimplemented, backupStorage: .unimplemented, log: .unimplemented, mainQueue: .unimplemented, @@ -98,6 +100,10 @@ let appReducer = Reducer<AppState, AppAction, AppEnvironment> cancellables.append(env.messageListener(onError: { error in env.log(.error(error as NSError)) })) + cancellables.append(env.receiveFileHandler(onError: { error in + env.log(.error(error as NSError)) + })) + cancellables.append(env.messenger.registerBackupCallback(.init { data in try? env.backupStorage.store(data) })) diff --git a/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift b/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift index 098a026c..4a847ae3 100644 --- a/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift +++ b/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift @@ -34,6 +34,10 @@ final class AppFeatureTests: XCTestCase { actions.append(.didStartMessageListener) return Cancellable {} } + store.environment.receiveFileHandler.run = { _ in + actions.append(.didStartReceiveFileHandler) + return Cancellable {} + } store.environment.messenger.registerBackupCallback.run = { _ in actions.append(.didRegisterBackupCallback) return Cancellable {} @@ -49,6 +53,7 @@ final class AppFeatureTests: XCTestCase { .didMakeDB, .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, ]) @@ -83,6 +88,10 @@ final class AppFeatureTests: XCTestCase { actions.append(.didStartMessageListener) return Cancellable {} } + store.environment.receiveFileHandler.run = { _ in + actions.append(.didStartReceiveFileHandler) + return Cancellable {} + } store.environment.messenger.registerBackupCallback.run = { _ in actions.append(.didRegisterBackupCallback) return Cancellable {} @@ -98,6 +107,7 @@ final class AppFeatureTests: XCTestCase { .didMakeDB, .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, .didLoadMessenger, ]) @@ -132,6 +142,10 @@ final class AppFeatureTests: XCTestCase { actions.append(.didStartMessageListener) return Cancellable {} } + store.environment.receiveFileHandler.run = { _ in + actions.append(.didStartReceiveFileHandler) + return Cancellable {} + } store.environment.messenger.registerBackupCallback.run = { _ in actions.append(.didRegisterBackupCallback) return Cancellable {} @@ -148,6 +162,7 @@ final class AppFeatureTests: XCTestCase { XCTAssertNoDifference(actions, [ .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, .didLoadMessenger, ]) @@ -182,6 +197,10 @@ final class AppFeatureTests: XCTestCase { actions.append(.didStartMessageListener) return Cancellable {} } + store.environment.receiveFileHandler.run = { _ in + actions.append(.didStartReceiveFileHandler) + return Cancellable {} + } store.environment.messenger.registerBackupCallback.run = { _ in actions.append(.didRegisterBackupCallback) return Cancellable {} @@ -198,6 +217,7 @@ final class AppFeatureTests: XCTestCase { XCTAssertNoDifference(actions, [ .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, .didLoadMessenger, ]) @@ -229,6 +249,10 @@ final class AppFeatureTests: XCTestCase { actions.append(.didStartMessageListener) return Cancellable {} } + store.environment.receiveFileHandler.run = { _ in + actions.append(.didStartReceiveFileHandler) + return Cancellable {} + } store.environment.messenger.registerBackupCallback.run = { _ in actions.append(.didRegisterBackupCallback) return Cancellable {} @@ -245,6 +269,7 @@ final class AppFeatureTests: XCTestCase { XCTAssertNoDifference(actions, [ .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, ]) @@ -331,6 +356,10 @@ final class AppFeatureTests: XCTestCase { actions.append(.didStartMessageListener) return Cancellable {} } + store.environment.receiveFileHandler.run = { _ in + actions.append(.didStartReceiveFileHandler) + return Cancellable {} + } store.environment.messenger.registerBackupCallback.run = { _ in actions.append(.didRegisterBackupCallback) return Cancellable {} @@ -346,6 +375,7 @@ final class AppFeatureTests: XCTestCase { XCTAssertNoDifference(actions, [ .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, ]) @@ -356,6 +386,7 @@ final class AppFeatureTests: XCTestCase { var actions: [Action]! var authHandlerOnError: [AuthCallbackHandler.OnError] = [] var messageListenerOnError: [MessageListenerHandler.OnError] = [] + var fileHandlerOnError: [ReceiveFileHandler.OnError] = [] var backupCallback: [UpdateBackupFunc] = [] let store = TestStore( @@ -383,6 +414,13 @@ final class AppFeatureTests: XCTestCase { actions.append(.didCancelMessageListener) } } + store.environment.receiveFileHandler.run = { onError in + fileHandlerOnError.append(onError) + actions.append(.didStartReceiveFileHandler) + return Cancellable { + actions.append(.didCancelReceiveFileHandler) + } + } store.environment.messenger.registerBackupCallback.run = { callback in backupCallback.append(callback) actions.append(.didRegisterBackupCallback) @@ -406,6 +444,7 @@ final class AppFeatureTests: XCTestCase { XCTAssertNoDifference(actions, [ .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, ]) @@ -420,9 +459,11 @@ final class AppFeatureTests: XCTestCase { XCTAssertNoDifference(actions, [ .didCancelAuthHandler, .didCancelMessageListener, + .didCancelReceiveFileHandler, .didCancelBackupCallback, .didStartAuthHandler, .didStartMessageListener, + .didStartReceiveFileHandler, .didRegisterBackupCallback, ]) @@ -444,6 +485,14 @@ final class AppFeatureTests: XCTestCase { .didLog(.error(messageError as NSError)) ]) + actions = [] + let fileError = NSError(domain: "receive-file-error", code: 3) + fileHandlerOnError.first?(fileError) + + XCTAssertNoDifference(actions, [ + .didLog(.error(fileError)) + ]) + actions = [] let backupData = "backup".data(using: .utf8)! backupCallback.first?.handle(backupData) @@ -458,6 +507,7 @@ final class AppFeatureTests: XCTestCase { XCTAssertNoDifference(actions, [ .didCancelAuthHandler, .didCancelMessageListener, + .didCancelReceiveFileHandler, .didCancelBackupCallback, ]) } @@ -467,10 +517,12 @@ private enum Action: Equatable { case didMakeDB case didStartAuthHandler case didStartMessageListener + case didStartReceiveFileHandler case didRegisterBackupCallback case didLoadMessenger case didCancelAuthHandler case didCancelMessageListener + case didCancelReceiveFileHandler case didCancelBackupCallback case didLog(Logger.Message) case didStoreBackup(Data) -- GitLab