From ef6c6113d3543851abeb0debdb1f3efece20ab36 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 28 Sep 2022 13:23:30 +0200 Subject: [PATCH] Add MessengerIsBackupRunning function --- .../Functions/MessengerIsBackupRunning.swift | 24 ++++++++++++ .../Messenger/Messenger.swift | 7 +++- .../Messenger/MessengerEnvironment.swift | 3 ++ .../MessengerIsBackupRunningTests.swift | 37 +++++++++++++++++++ 4 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 Sources/XXMessengerClient/Messenger/Functions/MessengerIsBackupRunning.swift create mode 100644 Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsBackupRunningTests.swift diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerIsBackupRunning.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerIsBackupRunning.swift new file mode 100644 index 00000000..08453e23 --- /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 030aefb5..9e373e0b 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 f6f9a826..d2ae4fac 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 00000000..7076aa64 --- /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()) + } +} -- GitLab