import CustomDump import XCTest import XXClient @testable import XXMessengerClient final class MessengerStartTests: XCTestCase { func testStart() throws { var didStartNetworkFollower: [Int] = [] var env: MessengerEnvironment = .unimplemented env.cMix.get = { var cMix: CMix = .unimplemented cMix.networkFollowerStatus.run = { .stopped } cMix.startNetworkFollower.run = { timeoutMS in didStartNetworkFollower.append(timeoutMS) } return cMix } let start: MessengerStart = .live(env) try start(timeoutMS: 123) XCTAssertNoDifference(didStartNetworkFollower, [123]) } func testStartWhenNotLoaded() { var env: MessengerEnvironment = .unimplemented env.cMix.get = { nil } let start: MessengerStart = .live(env) XCTAssertThrowsError(try start()) { error in XCTAssertEqual( error as? MessengerStart.Error, MessengerStart.Error.notLoaded ) } } func testStartWhenRunning() throws { var env: MessengerEnvironment = .unimplemented env.cMix.get = { var cMix: CMix = .unimplemented cMix.networkFollowerStatus.run = { .running } return cMix } let start: MessengerStart = .live(env) try start() } func testStartNetworkFollowerFailure() { struct Error: Swift.Error, Equatable {} let error = Error() var env: MessengerEnvironment = .unimplemented env.cMix.get = { var cMix: CMix = .unimplemented cMix.networkFollowerStatus.run = { .stopped } cMix.startNetworkFollower.run = { _ in throw error } return cMix } let start: MessengerStart = .live(env) XCTAssertThrowsError(try start()) { err in XCTAssertEqual(err as? Error, error) } } }