diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerIsBackupRunning.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerIsBackupRunning.swift new file mode 100644 index 0000000000000000000000000000000000000000..08453e23cb8eddf2190ac49b5870489980b88765 --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerIsBackupRunning.swift @@ -0,0 +1,24 @@ +import XCTestDynamicOverlay +import XXClient + +public struct MessengerIsBackupRunning { + public var run: () -> Bool + + public func callAsFunction() -> Bool { + run() + } +} + +extension MessengerIsBackupRunning { + public static func live(_ env: MessengerEnvironment) -> MessengerIsBackupRunning { + MessengerIsBackupRunning { + env.backup()?.isRunning() == true + } + } +} + +extension MessengerIsBackupRunning { + public static let unimplemented = MessengerIsBackupRunning( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift index 030aefb5c6df1b60686148bd2ba451c6f4edb017..9e373e0b4bd95df7ec212ab957799dfbb945589a 100644 --- a/Sources/XXMessengerClient/Messenger/Messenger.swift +++ b/Sources/XXMessengerClient/Messenger/Messenger.swift @@ -30,6 +30,7 @@ public struct Messenger { public var verifyContact: MessengerVerifyContact public var sendMessage: MessengerSendMessage public var registerBackupCallback: MessengerRegisterBackupCallback + public var isBackupRunning: MessengerIsBackupRunning } extension Messenger { @@ -63,7 +64,8 @@ extension Messenger { registerForNotifications: .live(env), verifyContact: .live(env), sendMessage: .live(env), - registerBackupCallback: .live(env) + registerBackupCallback: .live(env), + isBackupRunning: .live(env) ) } } @@ -98,6 +100,7 @@ extension Messenger { registerForNotifications: .unimplemented, verifyContact: .unimplemented, sendMessage: .unimplemented, - registerBackupCallback: .unimplemented + registerBackupCallback: .unimplemented, + isBackupRunning: .unimplemented ) } diff --git a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift index f6f9a8263cf735031f3e6eaa42a3adf7d4413c0c..d2ae4fac0bd1eac177de11a32bb4e6a563cba248 100644 --- a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift +++ b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift @@ -4,6 +4,7 @@ import XCTestDynamicOverlay public struct MessengerEnvironment { public var authCallbacks: AuthCallbacksRegistry + public var backup: Stored<Backup?> public var backupCallbacks: BackupCallbacksRegistry public var cMix: Stored<CMix?> public var downloadNDF: DownloadAndVerifySignedNdf @@ -46,6 +47,7 @@ extension MessengerEnvironment { public static func live() -> MessengerEnvironment { MessengerEnvironment( authCallbacks: .live(), + backup: .inMemory(), backupCallbacks: .live(), cMix: .inMemory(), downloadNDF: .live, @@ -83,6 +85,7 @@ extension MessengerEnvironment { extension MessengerEnvironment { public static let unimplemented = MessengerEnvironment( authCallbacks: .unimplemented, + backup: .unimplemented(), backupCallbacks: .unimplemented, cMix: .unimplemented(), downloadNDF: .unimplemented, diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsBackupRunningTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsBackupRunningTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..7076aa648b4d287ece157cf56ae868000fdfe6ed --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsBackupRunningTests.swift @@ -0,0 +1,37 @@ +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerIsBackupRunningTests: XCTestCase { + func testWithoutBackup() { + var env: MessengerEnvironment = .unimplemented + env.backup.get = { nil } + let isRunning: MessengerIsBackupRunning = .live(env) + + XCTAssertFalse(isRunning()) + } + + func testWithBackupRunning() { + var env: MessengerEnvironment = .unimplemented + env.backup.get = { + var backup: Backup = .unimplemented + backup.isRunning.run = { true } + return backup + } + let isRunning: MessengerIsBackupRunning = .live(env) + + XCTAssertTrue(isRunning()) + } + + func testWithBackupNotRunning() { + var env: MessengerEnvironment = .unimplemented + env.backup.get = { + var backup: Backup = .unimplemented + backup.isRunning.run = { false } + return backup + } + let isRunning: MessengerIsBackupRunning = .live(env) + + XCTAssertFalse(isRunning()) + } +}