From 2ac3d6a0a9aa7cfaee23ab1db6233e27dac1bf62 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 23 Sep 2022 00:51:43 +0200
Subject: [PATCH] Log auth and message errors

---
 .../AppFeature/AppEnvironment+Live.swift       |  1 +
 .../Sources/AppFeature/AppFeature.swift        |  6 ++++--
 .../AppFeatureTests/AppFeatureTests.swift      | 18 ++++++++++++++----
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
index 3c75f40a..c79d5b93 100644
--- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
+++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
@@ -90,6 +90,7 @@ extension AppEnvironment {
         messenger: messenger,
         db: dbManager.getDB
       ),
+      log: .live(),
       mainQueue: mainQueue,
       bgQueue: bgQueue,
       welcome: {
diff --git a/Examples/xx-messenger/Sources/AppFeature/AppFeature.swift b/Examples/xx-messenger/Sources/AppFeature/AppFeature.swift
index 9424cbf2..caae3368 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 log: Logger
   var mainQueue: AnySchedulerOf<DispatchQueue>
   var bgQueue: AnySchedulerOf<DispatchQueue>
   var welcome: () -> WelcomeEnvironment
@@ -63,6 +64,7 @@ extension AppEnvironment {
     messenger: .unimplemented,
     authHandler: .unimplemented,
     messageListener: .unimplemented,
+    log: .unimplemented,
     mainQueue: .unimplemented,
     bgQueue: .unimplemented,
     welcome: { .unimplemented },
@@ -87,10 +89,10 @@ let appReducer = Reducer<AppState, AppAction, AppEnvironment>
         }
 
         cancellables.append(env.authHandler(onError: { error in
-          // TODO: handle error
+          env.log(.error(error as NSError))
         }))
         cancellables.append(env.messageListener(onError: { error in
-          // TODO: handle error
+          env.log(.error(error as NSError))
         }))
 
         let isLoaded = env.messenger.isLoaded()
diff --git a/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift b/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift
index 93d71903..5bda4eb3 100644
--- a/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift
+++ b/Examples/xx-messenger/Tests/AppFeatureTests/AppFeatureTests.swift
@@ -351,6 +351,9 @@ final class AppFeatureTests: XCTestCase {
         actions.append(.didCancelMessageListener)
       }
     }
+    store.environment.log.run = { msg, _, _, _ in
+      actions.append(.didLog(msg))
+    }
 
     store.send(.start)
 
@@ -381,15 +384,21 @@ final class AppFeatureTests: XCTestCase {
     actions = []
 
     struct AuthError: Error {}
-    authHandlerOnError.first?(AuthError())
+    let authError = AuthError()
+    authHandlerOnError.first?(authError)
 
-    XCTAssertNoDifference(actions, [])
+    XCTAssertNoDifference(actions, [
+      .didLog(.error(authError as NSError))
+    ])
     actions = []
 
     struct MessageError: Error {}
-    messageListenerOnError.first?(MessageError())
+    let messageError = MessageError()
+    messageListenerOnError.first?(messageError)
 
-    XCTAssertNoDifference(actions, [])
+    XCTAssertNoDifference(actions, [
+      .didLog(.error(messageError as NSError))
+    ])
     actions = []
 
     store.send(.stop)
@@ -408,4 +417,5 @@ private enum Action: Equatable {
   case didLoadMessenger
   case didCancelAuthHandler
   case didCancelMessageListener
+  case didLog(Logger.Message)
 }
-- 
GitLab