diff --git a/Examples/xx-messenger/Sources/AppFeature/App.swift b/Examples/xx-messenger/Sources/AppFeature/App.swift index cbaddc0f6c94e19a7d114a33c34ff97d62875e89..c395f2ad0b8ac415bdea844055d5f85ca7ad9672 100644 --- a/Examples/xx-messenger/Sources/AppFeature/App.swift +++ b/Examples/xx-messenger/Sources/AppFeature/App.swift @@ -7,14 +7,17 @@ import SwiftUI struct App: SwiftUI.App { init() { LoggingSystem.bootstrap(PersistentLogHandler.init) + ViewStore(store.stateless).send(.setupLogging) } + let store = Store( + initialState: AppComponent.State(), + reducer: AppComponent() + ) + var body: some Scene { WindowGroup { - AppView(store: Store( - initialState: AppComponent.State(), - reducer: AppComponent() - )) + AppView(store: store) } } } diff --git a/Examples/xx-messenger/Sources/AppFeature/AppComponent.swift b/Examples/xx-messenger/Sources/AppFeature/AppComponent.swift index a8af5004c65cb92240d2e4738771e6883e557174..d092a69e57ac781372297df8de4cdcce02a43d36 100644 --- a/Examples/xx-messenger/Sources/AppFeature/AppComponent.swift +++ b/Examples/xx-messenger/Sources/AppFeature/AppComponent.swift @@ -23,6 +23,7 @@ struct AppComponent: ReducerProtocol { } enum Action: Equatable, BindableAction { + case setupLogging case start case stop case binding(BindingAction<State>) @@ -55,6 +56,11 @@ struct AppComponent: ReducerProtocol { let log = self.log switch action { + case .setupLogging: + _ = try! messenger.setLogLevel(.debug) + messenger.startLogging() + return .none + case .start, .welcome(.finished), .restore(.finished), .home(.deleteAccount(.success)): state.screen = .loading return Effect.run { subscriber in diff --git a/Examples/xx-messenger/Tests/AppFeatureTests/AppComponentTests.swift b/Examples/xx-messenger/Tests/AppFeatureTests/AppComponentTests.swift index dff7d22aafdc54f1c60bd1d6d33d86cf044fce92..7533666ecc857876698f0478e688257cb2c501e6 100644 --- a/Examples/xx-messenger/Tests/AppFeatureTests/AppComponentTests.swift +++ b/Examples/xx-messenger/Tests/AppFeatureTests/AppComponentTests.swift @@ -9,6 +9,29 @@ import XXClient @testable import AppFeature final class AppComponentTests: XCTestCase { + func testSetupLogging() { + var actions: [Action] = [] + + let store = TestStore( + initialState: AppComponent.State(), + reducer: AppComponent() + ) + store.dependencies.app.messenger.setLogLevel.run = { level in + actions.append(.didSetLogLevel(level)) + return true + } + store.dependencies.app.messenger.startLogging.run = { + actions.append(.didStartLogging) + } + + store.send(.setupLogging) + + XCTAssertNoDifference(actions, [ + .didSetLogLevel(.debug), + .didStartLogging, + ]) + } + func testStartWithoutMessengerCreated() { var actions: [Action]! @@ -514,4 +537,6 @@ private enum Action: Equatable { case didCancelBackupCallback case didLog(Logger.Message) case didStoreBackup(Data) + case didSetLogLevel(LogLevel) + case didStartLogging }