import CustomDump
import XCTest
@testable import ElixxirDAppsSDK

final class SingleUseSendReportTests: XCTestCase {
  func testCoding() throws {
    let rounds: [Int] = [1, 5, 9]
    let ephId: [Int] = [0, 0, 0, 0, 0, 0, 3, 89]
    let ephIdSourceB64 = "emV6aW1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD"
    let jsonString = """
    {
      "Rounds": [\(rounds.map { "\($0)" }.joined(separator: ", "))],
      "EphID": {
        "EphId": [\(ephId.map { "\($0)" }.joined(separator: ", "))],
        "Source": "\(ephIdSourceB64)"
      }
    }
    """
    let jsonData = jsonString.data(using: .utf8)!
    let report = try SingleUseSendReport.decode(jsonData)

    XCTAssertNoDifference(report, SingleUseSendReport(
      rounds: rounds,
      ephId: .init(
        ephId: ephId,
        source: Data(base64Encoded: ephIdSourceB64)!
      )
    ))

    let encodedReport = try report.encode()
    let decodedReport = try SingleUseSendReport.decode(encodedReport)

    XCTAssertNoDifference(decodedReport, report)
  }
}