Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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() }, [])
}
}