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
This commit is part of merge request !60. Comments created here will be created in the context of that merge request.
...@@ -2,11 +2,11 @@ import Bindings ...@@ -2,11 +2,11 @@ import Bindings
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct TrackServicesCallback { public struct TrackServicesCallback {
public init(handle: @escaping (Result<[TrackServicesCallbackResult], Error>) -> Void) { public init(handle: @escaping (Result<MessageServiceList, Error>) -> Void) {
self.handle = handle self.handle = handle
} }
public var handle: (Result<[TrackServicesCallbackResult], Error>) -> Void public var handle: (Result<MessageServiceList, Error>) -> Void
} }
extension TrackServicesCallback { extension TrackServicesCallback {
...@@ -31,7 +31,7 @@ extension TrackServicesCallback { ...@@ -31,7 +31,7 @@ extension TrackServicesCallback {
} }
if let marshalData = marshalData { if let marshalData = marshalData {
do { do {
callback.handle(.success(try [TrackServicesCallbackResult].decode(marshalData))) callback.handle(.success(try MessageServiceList.decode(marshalData)))
} catch { } catch {
callback.handle(.failure(error)) callback.handle(.failure(error))
} }
......
import Foundation 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]) { public init(id: Data, services: [MessageService]) {
self.id = id self.id = id
self.services = services self.services = services
...@@ -10,7 +22,7 @@ public struct TrackServicesCallbackResult: Equatable { ...@@ -10,7 +22,7 @@ public struct TrackServicesCallbackResult: Equatable {
public var services: [MessageService] public var services: [MessageService]
} }
extension TrackServicesCallbackResult: Codable { extension MessageServiceListElement: Codable {
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case id = "Id" case id = "Id"
case services = "Services" case services = "Services"
...@@ -24,13 +36,3 @@ extension TrackServicesCallbackResult: Codable { ...@@ -24,13 +36,3 @@ extension TrackServicesCallbackResult: Codable {
try JSONEncoder().encode(self) 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 ...@@ -2,8 +2,43 @@ import CustomDump
import XCTest import XCTest
@testable import XXClient @testable import XXClient
final class TrackServicesCallbackResultTests: XCTestCase { final class MessageServiceListTests: XCTestCase {
func testCoding() throws { 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 idB64 = "AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD"
let serviceIdentifierB64 = "AQID" let serviceIdentifierB64 = "AQID"
let serviceTag = "TestTag 2" let serviceTag = "TestTag 2"
...@@ -21,9 +56,9 @@ final class TrackServicesCallbackResultTests: XCTestCase { ...@@ -21,9 +56,9 @@ final class TrackServicesCallbackResultTests: XCTestCase {
} }
""" """
let jsonData = jsonString.data(using: .utf8)! 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)!, id: Data(base64Encoded: idB64)!,
services: [ services: [
MessageService( MessageService(
...@@ -35,43 +70,8 @@ final class TrackServicesCallbackResultTests: XCTestCase { ...@@ -35,43 +70,8 @@ final class TrackServicesCallbackResultTests: XCTestCase {
)) ))
let encodedModel = try model.encode() let encodedModel = try model.encode()
let decodedModel = try TrackServicesCallbackResult.decode(encodedModel) let decodedModel = try MessageServiceListElement.decode(encodedModel)
XCTAssertNoDifference(decodedModel, model) 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