import CustomDump
import XCTest
@testable import XXClient

final class E2ESendReportTests: XCTestCase {
  func testCoding() throws {
    let rounds = [1, 5, 9]
    let messageIdB64 = "51Yy47uZbP0o2Y9B/kkreDLTB6opUol3M3mYiY2dcdQ="
    let timestamp: Int = 1_653_582_683_183_384_000
    let jsonString = """
    {
      "Rounds": [\(rounds.map { "\($0)" }.joined(separator: ", "))],
      "MessageID": "\(messageIdB64)",
      "Timestamp": \(timestamp)
    }
    """
    let jsonData = jsonString.data(using: .utf8)!
    let model = try E2ESendReport.decode(jsonData)

    XCTAssertNoDifference(model, E2ESendReport(
      roundList: rounds,
      messageId: Data(base64Encoded: messageIdB64)!,
      timestamp: timestamp
    ))

    let encodedModel = try model.encode()
    let decodedModel = try E2ESendReport.decode(encodedModel)

    XCTAssertNoDifference(decodedModel, model)
  }

  func testDecodeEmpty() throws {
    let jsonString = "{}"
    let jsonData = jsonString.data(using: .utf8)!
    let model = try E2ESendReport.decode(jsonData)

    XCTAssertNoDifference(model, E2ESendReport(
      roundList: nil,
      messageId: nil,
      timestamp: nil
    ))
  }
}