Newer
Older
import ComposableArchitecture
import XCTest
@testable import WelcomeFeature
final class WelcomeComponentTests: XCTestCase {
let mainQueue = DispatchQueue.test
let bgQueue = DispatchQueue.test
var didCreateMessenger = 0
initialState: WelcomeComponent.State(),
reducer: WelcomeComponent()
store.dependencies.app.mainQueue = mainQueue.eraseToAnyScheduler()
store.dependencies.app.bgQueue = bgQueue.eraseToAnyScheduler()
store.dependencies.app.messenger.create.run = { didCreateMessenger += 1 }
store.send(.newAccountTapped) {
$0.isCreatingAccount = true
mainQueue.advance()
store.receive(.finished) {
$0.isCreatingAccount = false
}
}
func testNewAccountTappedMessengerCreateFailure() {
struct Failure: Error {}
let failure = Failure()
let mainQueue = DispatchQueue.test
let bgQueue = DispatchQueue.test
initialState: WelcomeComponent.State(),
reducer: WelcomeComponent()
store.dependencies.app.mainQueue = mainQueue.eraseToAnyScheduler()
store.dependencies.app.bgQueue = bgQueue.eraseToAnyScheduler()
store.dependencies.app.messenger.create.run = { throw failure }
store.send(.newAccountTapped) {
$0.isCreatingAccount = true
}
bgQueue.advance()
mainQueue.advance()
store.receive(.failed(failure.localizedDescription)) {
$0.failure = failure.localizedDescription
}
}
func testRestore() {
let store = TestStore(
initialState: WelcomeComponent.State(),
reducer: WelcomeComponent()