import CustomDump
import XCTest
@testable import XXClient

final class GroupChatMessageTests: XCTestCase {
  func testCoding() throws {
    let groupIdB64 = "AAAAAAAJlasAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE"
    let senderIdB64 = "AAAAAAAAB8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD"
    let messageIdB64 = "Zm9ydHkgZml2ZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
    let payloadB64 = "Zm9ydHkgZml2ZQ=="
    let timestamp: Int64 = 1_663_009_269_474_079_000
    let jsonString = """
    {
      "GroupId": "\(groupIdB64)",
      "SenderId": "\(senderIdB64)",
      "MessageId": "\(messageIdB64)",
      "Payload": "\(payloadB64)",
      "Timestamp": \(timestamp)
    }
    """
    let jsonData = jsonString.data(using: .utf8)!
    let model = try GroupChatMessage.decode(jsonData)

    XCTAssertNoDifference(model, GroupChatMessage(
      groupId: Data(base64Encoded: groupIdB64)!,
      senderId: Data(base64Encoded: senderIdB64)!,
      messageId: Data(base64Encoded: messageIdB64)!,
      payload: Data(base64Encoded: payloadB64)!,
      timestamp: timestamp
    ))

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

    XCTAssertNoDifference(decodedModel, model)
  }
}