import CustomDump
import XCTest
@testable import ElixxirDAppsSDK

final class BackupReportTests: XCTestCase {
  func testCoding() throws {
    let ids: [Data] = [
      "id1".data(using: .utf8)!,
      "id2".data(using: .utf8)!,
      "id3".data(using: .utf8)!,
    ]
    let idsB64 = try JSONEncoder().encode(ids).base64EncodedString()
    let paramsB64 = "cGFyYW1z"
    let jsonString = """
    {
      "BackupIdListJson": "\(idsB64)",
      "BackupParams": "\(paramsB64)"
    }
    """
    let jsonData = jsonString.data(using: .utf8)!
    let model = try BackupReport.decode(jsonData)

    XCTAssertNoDifference(model, BackupReport(
      ids: ids,
      params: Data(base64Encoded: paramsB64)!
    ))

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

    XCTAssertNoDifference(decodedModel, model)
  }
}