Skip to content
Snippets Groups Projects
Commit f84c676c authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add MessageService model

parent ce5ae808
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!60Update Bindings
import Foundation
public struct MessageService: Equatable {
public init(
identifier: Data,
tag: String,
metadata: Data
) {
self.identifier = identifier
self.tag = tag
self.metadata = metadata
}
public var identifier: Data
public var tag: String
public var metadata: Data
}
extension MessageService: Codable {
enum CodingKeys: String, CodingKey {
case identifier = "Identifier"
case tag = "Tag"
case metadata = "Metadata"
}
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
extension Array where Element == MessageService {
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
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 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)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment