import CustomDump import XCTest @testable import XXClient final class MessageServiceTests: XCTestCase { func testCoding() throws { let identifierB64 = "AQID" let tag = "TestTag 2" let metadataB64 = "BAUG" let jsonString = """ { "Identifier": "\(identifierB64)", "Tag": "\(tag)", "Metadata": "\(metadataB64)" } """ let jsonData = jsonString.data(using: .utf8)! let model = try MessageService.decode(jsonData) XCTAssertNoDifference(model, MessageService( identifier: Data(base64Encoded: identifierB64)!, tag: tag, metadata: Data(base64Encoded: metadataB64)! )) let encodedModel = try model.encode() let decodedModel = try MessageService.decode(encodedModel) XCTAssertNoDifference(decodedModel, model) } func testCodingWithoutMetadata() throws { let identifierB64 = "AQID" let tag = "TestTag 2" let jsonString = """ { "Identifier": "\(identifierB64)", "Tag": "\(tag)", "Metadata": null } """ let jsonData = jsonString.data(using: .utf8)! let model = try MessageService.decode(jsonData) XCTAssertNoDifference(model, MessageService( identifier: Data(base64Encoded: identifierB64)!, tag: tag, metadata: nil )) let encodedModel = try model.encode() let decodedModel = try MessageService.decode(encodedModel) XCTAssertNoDifference(decodedModel, model) } func testCodingArray() throws { let models = [ MessageService( identifier: "service1-id".data(using: .utf8)!, tag: "service1-tag", metadata: "service1-metadata".data(using: .utf8)! ), MessageService( identifier: "service2-id".data(using: .utf8)!, tag: "service2-tag", metadata: "service2-metadata".data(using: .utf8)! ), MessageService( identifier: "service3-id".data(using: .utf8)!, tag: "service3-tag", metadata: "service3-metadata".data(using: .utf8)! ), ] let encodedModels = try models.encode() let decodedModels = try [MessageService].decode(encodedModels) XCTAssertNoDifference(models, decodedModels) } }