Newer
Older
import ComposableArchitecture
import XCTest
@testable import WelcomeFeature
@MainActor
final class WelcomeFeatureTests: XCTestCase {
func testNewAccountTapped() {
let mainQueue = DispatchQueue.test
let bgQueue = DispatchQueue.test
var didCreateMessenger = 0
let store = TestStore(
initialState: WelcomeState(),
reducer: welcomeReducer,
environment: .unimplemented
)
store.environment.mainQueue = mainQueue.eraseToAnyScheduler()
store.environment.bgQueue = bgQueue.eraseToAnyScheduler()
store.environment.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
let store = TestStore(
initialState: WelcomeState(),
reducer: welcomeReducer,
environment: .unimplemented
)
store.environment.mainQueue = mainQueue.eraseToAnyScheduler()
store.environment.bgQueue = bgQueue.eraseToAnyScheduler()
store.environment.messenger.create.run = { throw failure }
store.send(.newAccountTapped) {
$0.isCreatingAccount = true
}
bgQueue.advance()
mainQueue.advance()
store.receive(.failed(failure.localizedDescription)) {
$0.failure = failure.localizedDescription