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

final class MessengerStopBackupTests: XCTestCase {
  func testStop() throws {
    var didStopBackup = 0
    var didSetBackup: [Backup?] = []

    var env: MessengerEnvironment = .unimplemented
    env.backup.get = {
      var backup: Backup = .unimplemented
      backup.stop.run = { didStopBackup += 1 }
      return backup
    }
    env.backup.set = { backup in
      didSetBackup.append(backup)
    }
    let stop: MessengerStopBackup = .live(env)

    try stop()

    XCTAssertEqual(didStopBackup, 1)
    XCTAssertEqual(didSetBackup.count, 1)
    XCTAssertNil(didSetBackup.first as? Backup)
  }

  func testStopFailure() {
    struct Failure: Error, Equatable {}
    let failure = Failure()

    var env: MessengerEnvironment = .unimplemented
    env.backup.get = {
      var backup: Backup = .unimplemented
      backup.stop.run = { throw failure }
      return backup
    }
    let stop: MessengerStopBackup = .live(env)

    XCTAssertThrowsError(try stop()) { error in
      XCTAssertNoDifference(error as NSError, failure as NSError)
    }
  }

  func testStopWithoutBackup() throws {
    var env: MessengerEnvironment = .unimplemented
    env.backup.get = { nil }
    let stop: MessengerStopBackup = .live(env)

    try stop()
  }
}