From b9020a4fd7be0d399326d4af109d568ee7e3669e Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 5 Oct 2022 01:20:17 +0200 Subject: [PATCH] Add MessengerSetLogLevel function wrapper --- .../Functions/MessengerSetLogLevel.swift | 22 ++++++++++ .../Messenger/Messenger.swift | 7 ++- .../Messenger/MessengerEnvironment.swift | 3 ++ .../Functions/MessengerSetLogLevelTests.swift | 44 +++++++++++++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 Sources/XXMessengerClient/Messenger/Functions/MessengerSetLogLevel.swift create mode 100644 Tests/XXMessengerClientTests/Messenger/Functions/MessengerSetLogLevelTests.swift diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerSetLogLevel.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerSetLogLevel.swift new file mode 100644 index 00000000..21e39bd7 --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerSetLogLevel.swift @@ -0,0 +1,22 @@ +import XCTestDynamicOverlay +import XXClient + +public struct MessengerSetLogLevel { + public var run: (LogLevel) throws -> Bool + + public func callAsFunction(_ logLevel: LogLevel) throws -> Bool { + try run(logLevel) + } +} + +extension MessengerSetLogLevel { + public static func live(_ env: MessengerEnvironment) -> MessengerSetLogLevel { + MessengerSetLogLevel(run: env.setLogLevel.run) + } +} + +extension MessengerSetLogLevel { + public static let unimplemented = MessengerSetLogLevel( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift index 692d81fd..168cd84a 100644 --- a/Sources/XXMessengerClient/Messenger/Messenger.swift +++ b/Sources/XXMessengerClient/Messenger/Messenger.swift @@ -38,6 +38,7 @@ public struct Messenger { public var resumeBackup: MessengerResumeBackup public var backupParams: MessengerBackupParams public var stopBackup: MessengerStopBackup + public var setLogLevel: MessengerSetLogLevel } extension Messenger { @@ -79,7 +80,8 @@ extension Messenger { startBackup: .live(env), resumeBackup: .live(env), backupParams: .live(env), - stopBackup: .live(env) + stopBackup: .live(env), + setLogLevel: .live(env) ) } } @@ -122,6 +124,7 @@ extension Messenger { startBackup: .unimplemented, resumeBackup: .unimplemented, backupParams: .unimplemented, - stopBackup: .unimplemented + stopBackup: .unimplemented, + setLogLevel: .unimplemented ) } diff --git a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift index f019df16..bb26093a 100644 --- a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift +++ b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift @@ -31,6 +31,7 @@ public struct MessengerEnvironment { public var registerForNotifications: RegisterForNotifications public var resumeBackup: ResumeBackup public var searchUD: SearchUD + public var setLogLevel: SetLogLevel public var sleep: (TimeInterval) -> Void public var storageDir: String public var ud: Stored<UserDiscovery?> @@ -76,6 +77,7 @@ extension MessengerEnvironment { registerForNotifications: .live, resumeBackup: .live, searchUD: .live, + setLogLevel: .live, sleep: { Thread.sleep(forTimeInterval: $0) }, storageDir: MessengerEnvironment.defaultStorageDir, ud: .inMemory(), @@ -116,6 +118,7 @@ extension MessengerEnvironment { registerForNotifications: .unimplemented, resumeBackup: .unimplemented, searchUD: .unimplemented, + setLogLevel: .unimplemented, sleep: XCTUnimplemented("\(Self.self).sleep"), storageDir: "unimplemented", ud: .unimplemented(), diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerSetLogLevelTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerSetLogLevelTests.swift new file mode 100644 index 00000000..d6d44d05 --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerSetLogLevelTests.swift @@ -0,0 +1,44 @@ +import CustomDump +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerSetLogLevelTests: XCTestCase { + func testSetLogLevel() throws { + var didSetLogLevel: [LogLevel] = [] + var env: MessengerEnvironment = .unimplemented + env.setLogLevel.run = { level in + didSetLogLevel.append(level) + return true + } + let setLogLevel: MessengerSetLogLevel = .live(env) + + let result = try setLogLevel(.debug) + + XCTAssertNoDifference(didSetLogLevel, [.debug]) + XCTAssertNoDifference(result, true) + } + + func testSetLogLevelReturnsFalse() throws { + var env: MessengerEnvironment = .unimplemented + env.setLogLevel.run = { _ in return false } + let setLogLevel: MessengerSetLogLevel = .live(env) + + let result = try setLogLevel(.debug) + + XCTAssertNoDifference(result, false) + } + + func testSetLogLevelFailure() { + struct Failure: Error, Equatable {} + let failure = Failure() + + var env: MessengerEnvironment = .unimplemented + env.setLogLevel.run = { _ in throw failure } + let setLogLevel: MessengerSetLogLevel = .live(env) + + XCTAssertThrowsError(try setLogLevel(.debug)) { error in + XCTAssertNoDifference(error as NSError, failure as NSError) + } + } +} -- GitLab