From 476713202f5a5f794fff5ff97949460c136d410d Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Mon, 21 Nov 2022 11:32:14 +0100 Subject: [PATCH] Add MessengerRegisterGroupChatProcessor --- .../MessengerRegisterGroupChatProcessor.swift | 24 +++++++++++++ .../Messenger/Messenger.swift | 3 ++ ...engerRegisterGroupChatProcessorTests.swift | 34 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 Sources/XXMessengerClient/Messenger/Functions/MessengerRegisterGroupChatProcessor.swift create mode 100644 Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterGroupChatProcessorTests.swift diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerRegisterGroupChatProcessor.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerRegisterGroupChatProcessor.swift new file mode 100644 index 00000000..2830dd1a --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerRegisterGroupChatProcessor.swift @@ -0,0 +1,24 @@ +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 {}) + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift index 4e5585ac..44b213cb 100644 --- a/Sources/XXMessengerClient/Messenger/Messenger.swift +++ b/Sources/XXMessengerClient/Messenger/Messenger.swift @@ -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 ) } diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterGroupChatProcessorTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterGroupChatProcessorTests.swift new file mode 100644 index 00000000..ca517a3c --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterGroupChatProcessorTests.swift @@ -0,0 +1,34 @@ +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) + } +} -- GitLab