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
import XCTest
import XXClient
@testable import XXMessengerClient
import CustomDump
final class AuthCallbacksRegistryTests: XCTestCase {
func testRegistry() {
var firstAuthCallbacksDidHandle: [AuthCallbacks.Callback] = []
var secondAuthCallbacksDidHandle: [AuthCallbacks.Callback] = []
let firstAuthCallbacks = AuthCallbacks { callback in
firstAuthCallbacksDidHandle.append(callback)
}
let secondAuthCallbacks = AuthCallbacks { callback in
secondAuthCallbacksDidHandle.append(callback)
}
let messengerAuthCallbacks: AuthCallbacksRegistry = .live()
let registeredAuthCallbacks = messengerAuthCallbacks.registered()
let firstAuthCallbacksCancellable = messengerAuthCallbacks.register(firstAuthCallbacks)
let secondAuthCallbacksCancellable = messengerAuthCallbacks.register(secondAuthCallbacks)
let firstCallback = [AuthCallbacks.Callback].stubs[0]
registeredAuthCallbacks.handle(firstCallback)
XCTAssertNoDifference(firstAuthCallbacksDidHandle, [firstCallback])
XCTAssertNoDifference(secondAuthCallbacksDidHandle, [firstCallback])
firstAuthCallbacksCancellable.cancel()
let secondCallback = [AuthCallbacks.Callback].stubs[1]
registeredAuthCallbacks.handle(secondCallback)
XCTAssertNoDifference(firstAuthCallbacksDidHandle, [firstCallback])
XCTAssertNoDifference(secondAuthCallbacksDidHandle, [firstCallback, secondCallback])
secondAuthCallbacksCancellable.cancel()
let thirdCallback = [AuthCallbacks.Callback].stubs[2]
registeredAuthCallbacks.handle(thirdCallback)
XCTAssertNoDifference(firstAuthCallbacksDidHandle, [firstCallback])
XCTAssertNoDifference(secondAuthCallbacksDidHandle, [firstCallback, secondCallback])
}
}