import CustomDump
import XCTest
@testable import XXClient

final class FileSendTests: XCTestCase {
  func testCoding() throws {
    let name = "testfile.txt"
    let type = "text file"
    let previewB64 = "aXQncyBtZSBhIHByZXZpZXc="
    let contentsB64 = "VGhpcyBpcyB0aGUgZnVsbCBjb250ZW50cyBvZiB0aGUgZmlsZSBpbiBieXRlcw=="
    let jsonString = """
    {
      "Name": "\(name)",
      "Type": "\(type)",
      "Preview": "\(previewB64)",
      "Contents": "\(contentsB64)"
    }
    """
    let jsonData = jsonString.data(using: .utf8)!
    let model = try FileSend.decode(jsonData)

    XCTAssertNoDifference(model, FileSend(
      name: name,
      type: type,
      preview: Data(base64Encoded: previewB64)!,
      contents: Data(base64Encoded: contentsB64)!
    ))

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

    XCTAssertNoDifference(decodedModel, model)
  }
}