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

Add MessengerRegisterMessageListener function

parent 19ba5a2a
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!85Messenger - send & receive messages
import XCTestDynamicOverlay
import XXClient
public struct MessengerRegisterMessageListener {
public var run: (Listener) -> Cancellable
public func callAsFunction(_ listener: Listener) -> Cancellable {
run(listener)
}
}
extension MessengerRegisterMessageListener {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterMessageListener {
MessengerRegisterMessageListener { listener in
env.messageListeners.register(listener)
}
}
}
extension MessengerRegisterMessageListener {
public static let unimplemented = MessengerRegisterMessageListener(
run: XCTUnimplemented("\(Self.self)", placeholder: Cancellable {})
)
}
...@@ -16,6 +16,7 @@ public struct MessengerEnvironment { ...@@ -16,6 +16,7 @@ public struct MessengerEnvironment {
public var loadCMix: LoadCMix public var loadCMix: LoadCMix
public var login: Login public var login: Login
public var lookupUD: LookupUD public var lookupUD: LookupUD
public var messageListeners: ListenersRegistry
public var ndfEnvironment: NDFEnvironment public var ndfEnvironment: NDFEnvironment
public var newCMix: NewCMix public var newCMix: NewCMix
public var newOrLoadUd: NewOrLoadUd public var newOrLoadUd: NewOrLoadUd
...@@ -52,6 +53,7 @@ extension MessengerEnvironment { ...@@ -52,6 +53,7 @@ extension MessengerEnvironment {
loadCMix: .live, loadCMix: .live,
login: .live, login: .live,
lookupUD: .live, lookupUD: .live,
messageListeners: .live(),
ndfEnvironment: .mainnet, ndfEnvironment: .mainnet,
newCMix: .live, newCMix: .live,
newOrLoadUd: .live, newOrLoadUd: .live,
...@@ -83,6 +85,7 @@ extension MessengerEnvironment { ...@@ -83,6 +85,7 @@ extension MessengerEnvironment {
loadCMix: .unimplemented, loadCMix: .unimplemented,
login: .unimplemented, login: .unimplemented,
lookupUD: .unimplemented, lookupUD: .unimplemented,
messageListeners: .unimplemented,
ndfEnvironment: .unimplemented, ndfEnvironment: .unimplemented,
newCMix: .unimplemented, newCMix: .unimplemented,
newOrLoadUd: .unimplemented, newOrLoadUd: .unimplemented,
......
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerRegisterMessageListenerTests: XCTestCase {
func testRegisterAuthCallbacks() {
var registeredListeners: [Listener] = []
var didHandleMessage: [Message] = []
var didCancelRegisteredListener = 0
var env: MessengerEnvironment = .unimplemented
env.messageListeners.register = { listener in
registeredListeners.append(listener)
return Cancellable { didCancelRegisteredListener += 1 }
}
let registerMessageListener: MessengerRegisterMessageListener = .live(env)
let cancellable = registerMessageListener(Listener { message in
didHandleMessage.append(message)
})
XCTAssertEqual(registeredListeners.count, 1)
registeredListeners.forEach { listener in
listener.handle(Message.stub(123))
}
XCTAssertNoDifference(didHandleMessage, [Message.stub(123)])
cancellable.cancel()
XCTAssertEqual(didCancelRegisteredListener, 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