import ComposableArchitecture import XCTest import XXClient @testable import ContactLookupFeature final class ContactLookupFeatureTests: XCTestCase { func testLookup() { let id: Data = "1234".data(using: .utf8)! var didLookupId: [Data] = [] let lookedUpContact = Contact.unimplemented("123data".data(using: .utf8)!) let store = TestStore( initialState: ContactLookupState(id: id), reducer: contactLookupReducer, environment: .unimplemented ) store.environment.mainQueue = .immediate store.environment.bgQueue = .immediate store.environment.messenger.lookupContact.run = { id in didLookupId.append(id) return lookedUpContact } store.send(.lookupTapped) { $0.isLookingUp = true $0.failure = nil } XCTAssertEqual(didLookupId, [id]) store.receive(.didLookup(lookedUpContact)) { $0.isLookingUp = false $0.failure = nil } } func testLookupFailure() { let id: Data = "1234".data(using: .utf8)! let failure = NSError(domain: "test", code: 0) let store = TestStore( initialState: ContactLookupState(id: id), reducer: contactLookupReducer, environment: .unimplemented ) store.environment.mainQueue = .immediate store.environment.bgQueue = .immediate store.environment.messenger.lookupContact.run = { _ in throw failure } store.send(.lookupTapped) { $0.isLookingUp = true $0.failure = nil } store.receive(.didFail(failure)) { $0.isLookingUp = false $0.failure = failure.localizedDescription } } }