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

Add MessengerRegisterAuthCallbacks functor

parent d08dae56
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!41Register auth callbacks with XXMessengerClient
import XXClient
import XCTestDynamicOverlay
public struct MessengerRegisterAuthCallbacks {
public var run: (AuthCallbacks) -> Cancellable
public func callAsFunction(_ authCallbacks: AuthCallbacks) -> Cancellable {
run(authCallbacks)
}
}
extension MessengerRegisterAuthCallbacks {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterAuthCallbacks {
MessengerRegisterAuthCallbacks { callback in
env.authCallbacks.register(callback)
}
}
}
extension MessengerRegisterAuthCallbacks {
public static let unimplemented = MessengerRegisterAuthCallbacks(
run: XCTUnimplemented("\(Self.self)")
)
}
......@@ -8,6 +8,7 @@ public struct Messenger {
public var create: MessengerCreate
public var isLoaded: MessengerIsLoaded
public var load: MessengerLoad
public var registerAuthCallbacks: MessengerRegisterAuthCallbacks
public var start: MessengerStart
public var isConnected: MessengerIsConnected
public var connect: MessengerConnect
......@@ -29,6 +30,7 @@ extension Messenger {
create: .live(env),
isLoaded: .live(env),
load: .live(env),
registerAuthCallbacks: .live(env),
start: .live(env),
isConnected: .live(env),
connect: .live(env),
......@@ -51,6 +53,7 @@ extension Messenger {
create: .unimplemented,
isLoaded: .unimplemented,
load: .unimplemented,
registerAuthCallbacks: .unimplemented,
start: .unimplemented,
isConnected: .unimplemented,
connect: .unimplemented,
......
......@@ -3,6 +3,7 @@ import XXClient
import XCTestDynamicOverlay
public struct MessengerEnvironment {
public var authCallbacks: AuthCallbacksRegistry
public var cMix: Stored<CMix?>
public var downloadNDF: DownloadAndVerifySignedNdf
public var e2e: Stored<E2E?>
......@@ -34,6 +35,7 @@ extension MessengerEnvironment {
public static func live() -> MessengerEnvironment {
MessengerEnvironment(
authCallbacks: .live(),
cMix: .inMemory(),
downloadNDF: .live,
e2e: .inMemory(),
......@@ -60,6 +62,7 @@ extension MessengerEnvironment {
extension MessengerEnvironment {
public static let unimplemented = MessengerEnvironment(
authCallbacks: .unimplemented,
cMix: .unimplemented(),
downloadNDF: .unimplemented,
e2e: .unimplemented(),
......
import XCTest
import XXClient
@testable import XXMessengerClient
import CustomDump
final class MessengerRegisterAuthCallbacksTests: XCTestCase {
func testRegisterAuthCallbacks() {
var registeredAuthCallbacks: [AuthCallbacks] = []
var didHandleCallbacks: [AuthCallbacks.Callback] = []
var didCancelRegisteredAuthCallbacks = 0
var env: MessengerEnvironment = .unimplemented
env.authCallbacks.register = { authCallbacks in
registeredAuthCallbacks.append(authCallbacks)
return Cancellable { didCancelRegisteredAuthCallbacks += 1 }
}
let registerAuthCallbacks: MessengerRegisterAuthCallbacks = .live(env)
let cancellable = registerAuthCallbacks(AuthCallbacks { callback in
didHandleCallbacks.append(callback)
})
XCTAssertEqual(registeredAuthCallbacks.count, 1)
registeredAuthCallbacks.forEach { authCallbacks in
[AuthCallbacks.Callback].stubs.forEach { callback in
authCallbacks.handle(callback)
}
}
XCTAssertNoDifference(didHandleCallbacks, .stubs)
cancellable.cancel()
XCTAssertEqual(didCancelRegisteredAuthCallbacks, 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