Skip to content
Snippets Groups Projects
MessengerWaitForNetworkTests.swift 1.42 KiB
Newer Older
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient

Dariusz Rybicki's avatar
Dariusz Rybicki committed
final class MessengerWaitForNetworkTests: XCTestCase {
  func testWaitSuccess() throws {
    var didWaitForNetwork: [Int] = []

Dariusz Rybicki's avatar
Dariusz Rybicki committed
    var env: MessengerEnvironment = .unimplemented
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    env.cMix.get = {
      var cMix: CMix = .unimplemented
      cMix.waitForNetwork.run = { timeoutMS in
        didWaitForNetwork.append(timeoutMS)
        return true
      }
      return cMix
    }
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    let waitForNetwork: MessengerWaitForNetwork = .live(env)

    try waitForNetwork(timeoutMS: 123)

    XCTAssertNoDifference(didWaitForNetwork, [123])
  }

  func testWaitWhenNotLoaded() {
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    var env: MessengerEnvironment = .unimplemented
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    env.cMix.get = { nil }
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    let waitForNetwork: MessengerWaitForNetwork = .live(env)

    XCTAssertThrowsError(try waitForNetwork()) { error in
      XCTAssertEqual(
Dariusz Rybicki's avatar
Dariusz Rybicki committed
        error as? MessengerWaitForNetwork.Error,
        MessengerWaitForNetwork.Error.notLoaded
      )
    }
  }

  func testWaitTimeout() {
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    var env: MessengerEnvironment = .unimplemented
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    env.cMix.get = {
      var cMix: CMix = .unimplemented
      cMix.waitForNetwork.run = { _ in false }
      return cMix
    }
Dariusz Rybicki's avatar
Dariusz Rybicki committed
    let waitForNetwork: MessengerWaitForNetwork = .live(env)

    XCTAssertThrowsError(try waitForNetwork()) { error in
      XCTAssertEqual(
Dariusz Rybicki's avatar
Dariusz Rybicki committed
        error as? MessengerWaitForNetwork.Error,
        MessengerWaitForNetwork.Error.timeout