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

Add MessengerRegisterGroupChatProcessor

parent 64e348f1
No related branches found
No related tags found
2 merge requests!147Group Chats,!102Release 1.0.0
import XCTestDynamicOverlay
import XXClient
public struct MessengerRegisterGroupChatProcessor {
public var run: (GroupChatProcessor) -> Cancellable
public func callAsFunction(_ processor: GroupChatProcessor) -> Cancellable {
run(processor)
}
}
extension MessengerRegisterGroupChatProcessor {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterGroupChatProcessor {
MessengerRegisterGroupChatProcessor { processor in
env.groupChatProcessors.register(processor)
}
}
}
extension MessengerRegisterGroupChatProcessor {
public static let unimplemented = MessengerRegisterGroupChatProcessor(
run: XCTUnimplemented("\(Self.self)", placeholder: Cancellable {})
)
}
......@@ -50,6 +50,7 @@ public struct Messenger {
public var trackServices: MessengerTrackServices
public var getNotificationReports: MessengerGetNotificationReports
public var registerGroupRequestHandler: MessengerRegisterGroupRequestHandler
public var registerGroupChatProcessor: MessengerRegisterGroupChatProcessor
public var startGroupChat: MessengerStartGroupChat
}
......@@ -105,6 +106,7 @@ extension Messenger {
trackServices: .live(env),
getNotificationReports: .live(env),
registerGroupRequestHandler: .live(env),
registerGroupChatProcessor: .live(env),
startGroupChat: .live(env)
)
}
......@@ -161,6 +163,7 @@ extension Messenger {
trackServices: .unimplemented,
getNotificationReports: .unimplemented,
registerGroupRequestHandler: .unimplemented,
registerGroupChatProcessor: .unimplemented,
startGroupChat: .unimplemented
)
}
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerRegisterGroupChatProcessorTests: XCTestCase {
func testRegister() {
var registered: [GroupChatProcessor] = []
var didHandle: [GroupChatProcessor.Result] = []
var didCancel = 0
var env: MessengerEnvironment = .unimplemented
env.groupChatProcessors.register = { processor in
registered.append(processor)
return Cancellable { didCancel += 1 }
}
let register: MessengerRegisterGroupChatProcessor = .live(env)
let cancellable = register(.init { result in
didHandle.append(result)
})
XCTAssertEqual(registered.count, 1)
let result = GroupChatProcessor.Result.success(.stub())
registered.forEach { processor in
processor.handle(result)
}
XCTAssertEqual(didHandle, [result])
cancellable.cancel()
XCTAssertEqual(didCancel, 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