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

Refactor

- Rename TrackServicesCallbackResult to MessageServiceListElement
- Add MessageServiceList typealias
parent 620138e6
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!60Update Bindings
......@@ -2,11 +2,11 @@ import Bindings
import XCTestDynamicOverlay
public struct TrackServicesCallback {
public init(handle: @escaping (Result<[TrackServicesCallbackResult], Error>) -> Void) {
public init(handle: @escaping (Result<MessageServiceList, Error>) -> Void) {
self.handle = handle
}
public var handle: (Result<[TrackServicesCallbackResult], Error>) -> Void
public var handle: (Result<MessageServiceList, Error>) -> Void
}
extension TrackServicesCallback {
......@@ -31,7 +31,7 @@ extension TrackServicesCallback {
}
if let marshalData = marshalData {
do {
callback.handle(.success(try [TrackServicesCallbackResult].decode(marshalData)))
callback.handle(.success(try MessageServiceList.decode(marshalData)))
} catch {
callback.handle(.failure(error))
}
......
import Foundation
public struct TrackServicesCallbackResult: Equatable {
public typealias MessageServiceList = Array<MessageServiceListElement>
extension MessageServiceList {
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
public struct MessageServiceListElement: Equatable {
public init(id: Data, services: [MessageService]) {
self.id = id
self.services = services
......@@ -10,7 +22,7 @@ public struct TrackServicesCallbackResult: Equatable {
public var services: [MessageService]
}
extension TrackServicesCallbackResult: Codable {
extension MessageServiceListElement: Codable {
enum CodingKeys: String, CodingKey {
case id = "Id"
case services = "Services"
......@@ -24,13 +36,3 @@ extension TrackServicesCallbackResult: Codable {
try JSONEncoder().encode(self)
}
}
extension Array where Element == TrackServicesCallbackResult {
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
......@@ -2,8 +2,43 @@ import CustomDump
import XCTest
@testable import XXClient
final class TrackServicesCallbackResultTests: XCTestCase {
final class MessageServiceListTests: XCTestCase {
func testCoding() throws {
let model: MessageServiceList = [
MessageServiceListElement(
id: "id1".data(using: .utf8)!,
services: [
MessageService(
identifier: "service1-id".data(using: .utf8)!,
tag: "service1-tag",
metadata: "service1-metadata".data(using: .utf8)!
),
]
),
MessageServiceListElement(
id: "id2".data(using: .utf8)!,
services: [
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 model.encode()
let decodedModels = try MessageServiceList.decode(encodedModels)
XCTAssertNoDifference(model, decodedModels)
}
func testElementCoding() throws {
let idB64 = "AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD"
let serviceIdentifierB64 = "AQID"
let serviceTag = "TestTag 2"
......@@ -21,9 +56,9 @@ final class TrackServicesCallbackResultTests: XCTestCase {
}
"""
let jsonData = jsonString.data(using: .utf8)!
let model = try TrackServicesCallbackResult.decode(jsonData)
let model = try MessageServiceListElement.decode(jsonData)
XCTAssertNoDifference(model, TrackServicesCallbackResult(
XCTAssertNoDifference(model, MessageServiceListElement(
id: Data(base64Encoded: idB64)!,
services: [
MessageService(
......@@ -35,43 +70,8 @@ final class TrackServicesCallbackResultTests: XCTestCase {
))
let encodedModel = try model.encode()
let decodedModel = try TrackServicesCallbackResult.decode(encodedModel)
let decodedModel = try MessageServiceListElement.decode(encodedModel)
XCTAssertNoDifference(decodedModel, model)
}
func testCodingArray() throws {
let models = [
TrackServicesCallbackResult(
id: "id1".data(using: .utf8)!,
services: [
MessageService(
identifier: "service1-id".data(using: .utf8)!,
tag: "service1-tag",
metadata: "service1-metadata".data(using: .utf8)!
),
]
),
TrackServicesCallbackResult(
id: "id2".data(using: .utf8)!,
services: [
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 [TrackServicesCallbackResult].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