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

Add MessengerRegisterBackupCallback function

parent c0220e52
No related branches found
No related tags found
2 merge requests!107Messenger - backup,!102Release 1.0.0
import XCTestDynamicOverlay
import XXClient
public struct MessengerRegisterBackupCallback {
public var run: (UpdateBackupFunc) -> Cancellable
public func callAsFunction(_ callback: UpdateBackupFunc) -> Cancellable {
run(callback)
}
}
extension MessengerRegisterBackupCallback {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterBackupCallback {
MessengerRegisterBackupCallback { callback in
env.backupCallbacks.register(callback)
}
}
}
extension MessengerRegisterBackupCallback {
public static let unimplemented = MessengerRegisterBackupCallback(
run: XCTUnimplemented("\(Self.self)", placeholder: Cancellable {})
)
}
...@@ -29,6 +29,7 @@ public struct Messenger { ...@@ -29,6 +29,7 @@ public struct Messenger {
public var registerForNotifications: MessengerRegisterForNotifications public var registerForNotifications: MessengerRegisterForNotifications
public var verifyContact: MessengerVerifyContact public var verifyContact: MessengerVerifyContact
public var sendMessage: MessengerSendMessage public var sendMessage: MessengerSendMessage
public var registerBackupCallback: MessengerRegisterBackupCallback
} }
extension Messenger { extension Messenger {
...@@ -61,7 +62,8 @@ extension Messenger { ...@@ -61,7 +62,8 @@ extension Messenger {
lookupContacts: .live(env), lookupContacts: .live(env),
registerForNotifications: .live(env), registerForNotifications: .live(env),
verifyContact: .live(env), verifyContact: .live(env),
sendMessage: .live(env) sendMessage: .live(env),
registerBackupCallback: .live(env)
) )
} }
} }
...@@ -95,6 +97,7 @@ extension Messenger { ...@@ -95,6 +97,7 @@ extension Messenger {
lookupContacts: .unimplemented, lookupContacts: .unimplemented,
registerForNotifications: .unimplemented, registerForNotifications: .unimplemented,
verifyContact: .unimplemented, verifyContact: .unimplemented,
sendMessage: .unimplemented sendMessage: .unimplemented,
registerBackupCallback: .unimplemented
) )
} }
...@@ -4,6 +4,7 @@ import XCTestDynamicOverlay ...@@ -4,6 +4,7 @@ import XCTestDynamicOverlay
public struct MessengerEnvironment { public struct MessengerEnvironment {
public var authCallbacks: AuthCallbacksRegistry public var authCallbacks: AuthCallbacksRegistry
public var backupCallbacks: BackupCallbacksRegistry
public var cMix: Stored<CMix?> public var cMix: Stored<CMix?>
public var downloadNDF: DownloadAndVerifySignedNdf public var downloadNDF: DownloadAndVerifySignedNdf
public var e2e: Stored<E2E?> public var e2e: Stored<E2E?>
...@@ -45,6 +46,7 @@ extension MessengerEnvironment { ...@@ -45,6 +46,7 @@ extension MessengerEnvironment {
public static func live() -> MessengerEnvironment { public static func live() -> MessengerEnvironment {
MessengerEnvironment( MessengerEnvironment(
authCallbacks: .live(), authCallbacks: .live(),
backupCallbacks: .live(),
cMix: .inMemory(), cMix: .inMemory(),
downloadNDF: .live, downloadNDF: .live,
e2e: .inMemory(), e2e: .inMemory(),
...@@ -81,6 +83,7 @@ extension MessengerEnvironment { ...@@ -81,6 +83,7 @@ extension MessengerEnvironment {
extension MessengerEnvironment { extension MessengerEnvironment {
public static let unimplemented = MessengerEnvironment( public static let unimplemented = MessengerEnvironment(
authCallbacks: .unimplemented, authCallbacks: .unimplemented,
backupCallbacks: .unimplemented,
cMix: .unimplemented(), cMix: .unimplemented(),
downloadNDF: .unimplemented, downloadNDF: .unimplemented,
e2e: .unimplemented(), e2e: .unimplemented(),
......
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerRegisterBackupCallbackTests: XCTestCase {
func testRegisterBackupCallback() {
var registeredCallbacks: [UpdateBackupFunc] = []
var didHandleData: [Data] = []
var didCancelRegisteredCallback = 0
var env: MessengerEnvironment = .unimplemented
env.backupCallbacks.register = { callback in
registeredCallbacks.append(callback)
return Cancellable { didCancelRegisteredCallback += 1 }
}
let registerBackupCallback: MessengerRegisterBackupCallback = .live(env)
let cancellable = registerBackupCallback(UpdateBackupFunc { data in
didHandleData.append(data)
})
XCTAssertEqual(registeredCallbacks.count, 1)
registeredCallbacks.forEach { callback in
callback.handle("test".data(using: .utf8)!)
}
XCTAssertNoDifference(didHandleData, ["test".data(using: .utf8)!])
cancellable.cancel()
XCTAssertEqual(didCancelRegisteredCallback, 1)
}
}
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