import CustomDump import XCTest import XXClient @testable import XXMessengerClient final class GroupRequestCallbacksRegistryTests: XCTestCase { func testRegistry() { var firstCallbackDidHandle: [Group] = [] var secondCallbackDidHandle: [Group] = [] let firstCallback = GroupRequest { group in firstCallbackDidHandle.append(group) } let secondCallback = GroupRequest { group in secondCallbackDidHandle.append(group) } let registry: GroupRequestCallbacksRegistry = .live() let registeredCallbacks = registry.registered() let firstCallbackCancellable = registry.register(firstCallback) let secondCallbackCancellable = registry.register(secondCallback) let firstGroup = Group.stub(1) registeredCallbacks.handle(firstGroup) XCTAssertNoDifference(firstCallbackDidHandle.map { $0.getId() }, [firstGroup.getId()]) XCTAssertNoDifference(secondCallbackDidHandle.map { $0.getId() }, [firstGroup.getId()]) firstCallbackDidHandle = [] secondCallbackDidHandle = [] firstCallbackCancellable.cancel() let secondGroup = Group.stub(2) registeredCallbacks.handle(secondGroup) XCTAssertNoDifference(firstCallbackDidHandle.map { $0.getId() }, []) XCTAssertNoDifference(secondCallbackDidHandle.map { $0.getId() }, [secondGroup.getId()]) firstCallbackDidHandle = [] secondCallbackDidHandle = [] secondCallbackCancellable.cancel() let thirdGroup = Group.stub(3) registeredCallbacks.handle(thirdGroup) XCTAssertNoDifference(firstCallbackDidHandle.map { $0.getId() }, []) XCTAssertNoDifference(secondCallbackDidHandle.map { $0.getId() }, []) } }