Skip to content
Snippets Groups Projects
Commit a127f3ca authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add MessengerStartLogging function

parent db115cdf
No related branches found
No related tags found
2 merge requests!116XXMessengerClient - logging,!102Release 1.0.0
import Foundation
import Logging
import XCTestDynamicOverlay
import XXClient
public struct MessengerStartLogging {
public var run: () -> Void
public func callAsFunction() -> Void {
run()
}
}
extension MessengerStartLogging {
public static func live(_ env: MessengerEnvironment) -> MessengerStartLogging {
return MessengerStartLogging {
env.registerLogWriter(.init { messageString in
let message = LogMessage.parse(messageString)
env.log(message)
})
}
}
}
extension MessengerStartLogging {
public static let unimplemented = MessengerStartLogging(
run: XCTUnimplemented("\(Self.self)")
)
}
...@@ -39,6 +39,7 @@ public struct Messenger { ...@@ -39,6 +39,7 @@ public struct Messenger {
public var backupParams: MessengerBackupParams public var backupParams: MessengerBackupParams
public var stopBackup: MessengerStopBackup public var stopBackup: MessengerStopBackup
public var setLogLevel: MessengerSetLogLevel public var setLogLevel: MessengerSetLogLevel
public var startLogging: MessengerStartLogging
} }
extension Messenger { extension Messenger {
...@@ -81,7 +82,8 @@ extension Messenger { ...@@ -81,7 +82,8 @@ extension Messenger {
resumeBackup: .live(env), resumeBackup: .live(env),
backupParams: .live(env), backupParams: .live(env),
stopBackup: .live(env), stopBackup: .live(env),
setLogLevel: .live(env) setLogLevel: .live(env),
startLogging: .live(env)
) )
} }
} }
...@@ -125,6 +127,7 @@ extension Messenger { ...@@ -125,6 +127,7 @@ extension Messenger {
resumeBackup: .unimplemented, resumeBackup: .unimplemented,
backupParams: .unimplemented, backupParams: .unimplemented,
stopBackup: .unimplemented, stopBackup: .unimplemented,
setLogLevel: .unimplemented setLogLevel: .unimplemented,
startLogging: .unimplemented
) )
} }
import Foundation import Foundation
import Logging
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
...@@ -18,6 +19,7 @@ public struct MessengerEnvironment { ...@@ -18,6 +19,7 @@ public struct MessengerEnvironment {
public var isListeningForMessages: Stored<Bool> public var isListeningForMessages: Stored<Bool>
public var isRegisteredWithUD: IsRegisteredWithUD public var isRegisteredWithUD: IsRegisteredWithUD
public var loadCMix: LoadCMix public var loadCMix: LoadCMix
public var log: (LogMessage) -> Void
public var login: Login public var login: Login
public var lookupUD: LookupUD public var lookupUD: LookupUD
public var messageListeners: ListenersRegistry public var messageListeners: ListenersRegistry
...@@ -29,6 +31,7 @@ public struct MessengerEnvironment { ...@@ -29,6 +31,7 @@ public struct MessengerEnvironment {
public var newUdManagerFromBackup: NewUdManagerFromBackup public var newUdManagerFromBackup: NewUdManagerFromBackup
public var passwordStorage: PasswordStorage public var passwordStorage: PasswordStorage
public var registerForNotifications: RegisterForNotifications public var registerForNotifications: RegisterForNotifications
public var registerLogWriter: RegisterLogWriter
public var resumeBackup: ResumeBackup public var resumeBackup: ResumeBackup
public var searchUD: SearchUD public var searchUD: SearchUD
public var setLogLevel: SetLogLevel public var setLogLevel: SetLogLevel
...@@ -48,7 +51,9 @@ extension MessengerEnvironment { ...@@ -48,7 +51,9 @@ extension MessengerEnvironment {
.path .path
public static func live() -> MessengerEnvironment { public static func live() -> MessengerEnvironment {
MessengerEnvironment( let logger = Logger(label: "xx.network.client")
return MessengerEnvironment(
authCallbacks: .live(), authCallbacks: .live(),
backup: .inMemory(), backup: .inMemory(),
backupCallbacks: .live(), backupCallbacks: .live(),
...@@ -64,6 +69,7 @@ extension MessengerEnvironment { ...@@ -64,6 +69,7 @@ extension MessengerEnvironment {
isListeningForMessages: .inMemory(false), isListeningForMessages: .inMemory(false),
isRegisteredWithUD: .live, isRegisteredWithUD: .live,
loadCMix: .live, loadCMix: .live,
log: { logger.log(level: $0.level, .init(stringLiteral: $0.text)) },
login: .live, login: .live,
lookupUD: .live, lookupUD: .live,
messageListeners: .live(), messageListeners: .live(),
...@@ -75,6 +81,7 @@ extension MessengerEnvironment { ...@@ -75,6 +81,7 @@ extension MessengerEnvironment {
newUdManagerFromBackup: .live, newUdManagerFromBackup: .live,
passwordStorage: .keychain, passwordStorage: .keychain,
registerForNotifications: .live, registerForNotifications: .live,
registerLogWriter: .live,
resumeBackup: .live, resumeBackup: .live,
searchUD: .live, searchUD: .live,
setLogLevel: .live, setLogLevel: .live,
...@@ -105,6 +112,7 @@ extension MessengerEnvironment { ...@@ -105,6 +112,7 @@ extension MessengerEnvironment {
isListeningForMessages: .unimplemented(placeholder: false), isListeningForMessages: .unimplemented(placeholder: false),
isRegisteredWithUD: .unimplemented, isRegisteredWithUD: .unimplemented,
loadCMix: .unimplemented, loadCMix: .unimplemented,
log: XCTUnimplemented("\(Self.self).log"),
login: .unimplemented, login: .unimplemented,
lookupUD: .unimplemented, lookupUD: .unimplemented,
messageListeners: .unimplemented, messageListeners: .unimplemented,
...@@ -116,6 +124,7 @@ extension MessengerEnvironment { ...@@ -116,6 +124,7 @@ extension MessengerEnvironment {
newUdManagerFromBackup: .unimplemented, newUdManagerFromBackup: .unimplemented,
passwordStorage: .unimplemented, passwordStorage: .unimplemented,
registerForNotifications: .unimplemented, registerForNotifications: .unimplemented,
registerLogWriter: .unimplemented,
resumeBackup: .unimplemented, resumeBackup: .unimplemented,
searchUD: .unimplemented, searchUD: .unimplemented,
setLogLevel: .unimplemented, setLogLevel: .unimplemented,
......
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerStartLoggingTests: XCTestCase {
func testStartLogging() {
var registeredLogWriters: [LogWriter] = []
var logMessages: [LogMessage] = []
var env: MessengerEnvironment = .unimplemented
env.registerLogWriter.run = { writer in
registeredLogWriters.append(writer)
}
env.log = { message in
logMessages.append(message)
}
let start: MessengerStartLogging = .live(env)
start()
XCTAssertNoDifference(registeredLogWriters.count, 1)
registeredLogWriters.first?.handle("DEBUG Hello, World!")
XCTAssertNoDifference(logMessages, [
.init(level: .debug, text: "Hello, World!"),
])
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment