From 9fcb7fb63bdbe6aedb601f306b8728120e9eb78f Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Sat, 3 Sep 2022 00:01:14 +0200
Subject: [PATCH] Refactor

- Rename TrackServicesCallbackResult to MessageServiceListElement
- Add MessageServiceList typealias
---
 .../Callbacks/TrackServicesCallback.swift     |  6 +-
 ...kResult.swift => MessageServiceList.swift} | 26 ++++---
 ...ts.swift => MessageServiceListTests.swift} | 78 +++++++++----------
 3 files changed, 56 insertions(+), 54 deletions(-)
 rename Sources/XXClient/Models/{TrackServicesCallbackResult.swift => MessageServiceList.swift} (76%)
 rename Tests/XXClientTests/Models/{TrackServicesCallbackResultTests.swift => MessageServiceListTests.swift} (74%)

diff --git a/Sources/XXClient/Callbacks/TrackServicesCallback.swift b/Sources/XXClient/Callbacks/TrackServicesCallback.swift
index 44a8c5ff..c84a996b 100644
--- a/Sources/XXClient/Callbacks/TrackServicesCallback.swift
+++ b/Sources/XXClient/Callbacks/TrackServicesCallback.swift
@@ -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))
           }
diff --git a/Sources/XXClient/Models/TrackServicesCallbackResult.swift b/Sources/XXClient/Models/MessageServiceList.swift
similarity index 76%
rename from Sources/XXClient/Models/TrackServicesCallbackResult.swift
rename to Sources/XXClient/Models/MessageServiceList.swift
index 03ea8490..47e83d56 100644
--- a/Sources/XXClient/Models/TrackServicesCallbackResult.swift
+++ b/Sources/XXClient/Models/MessageServiceList.swift
@@ -1,6 +1,18 @@
 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)
-  }
-}
diff --git a/Tests/XXClientTests/Models/TrackServicesCallbackResultTests.swift b/Tests/XXClientTests/Models/MessageServiceListTests.swift
similarity index 74%
rename from Tests/XXClientTests/Models/TrackServicesCallbackResultTests.swift
rename to Tests/XXClientTests/Models/MessageServiceListTests.swift
index 855e2310..02734434 100644
--- a/Tests/XXClientTests/Models/TrackServicesCallbackResultTests.swift
+++ b/Tests/XXClientTests/Models/MessageServiceListTests.swift
@@ -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)
-  }
 }
-- 
GitLab