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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import ComposableArchitecture
import XCTest
@testable import WelcomeFeature
@MainActor
final class WelcomeFeatureTests: XCTestCase {
func testNewAccountTapped() {
let store = TestStore(
initialState: WelcomeState(),
reducer: welcomeReducer,
environment: .unimplemented
)
let mainQueue = DispatchQueue.test
let bgQueue = DispatchQueue.test
var messengerDidCreate = false
store.environment.mainQueue = mainQueue.eraseToAnyScheduler()
store.environment.bgQueue = bgQueue.eraseToAnyScheduler()
store.environment.messenger.create.run = { messengerDidCreate = true }
store.send(.newAccountTapped) {
$0.isCreatingAccount = true
}
bgQueue.advance()
XCTAssertTrue(messengerDidCreate)
mainQueue.advance()
store.receive(.finished) {
$0.isCreatingAccount = false
}
}
func testNewAccountTappedMessengerCreateFailure() {
let store = TestStore(
initialState: WelcomeState(),
reducer: welcomeReducer,
environment: .unimplemented
)
let mainQueue = DispatchQueue.test
let bgQueue = DispatchQueue.test
struct Error: Swift.Error, Equatable {}
let error = Error()
store.environment.mainQueue = mainQueue.eraseToAnyScheduler()
store.environment.bgQueue = bgQueue.eraseToAnyScheduler()
store.environment.messenger.create.run = { throw error }
store.send(.newAccountTapped) {
$0.isCreatingAccount = true
}
bgQueue.advance()
mainQueue.advance()
store.receive(.failed(error.localizedDescription)) {
$0.isCreatingAccount = false
}
}
func testRestore() {
let store = TestStore(
initialState: WelcomeState(),
reducer: welcomeReducer,
environment: .unimplemented
)
store.send(.restoreTapped)
}
}