From c381331529de5fd3b3ca357d3482223be78fcac5 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Tue, 8 Nov 2022 22:56:19 +0100
Subject: [PATCH] Update MessengerTrackServices

Use CMixTrackServicesWithIdentity instead of CMixTrackServices
---
 .../Functions/MessengerTrackServices.swift    |  9 +++++-
 .../MessengerTrackServicesTests.swift         | 29 +++++++++++++++++--
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerTrackServices.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerTrackServices.swift
index 45dfc644..d16cd2b3 100644
--- a/Sources/XXMessengerClient/Messenger/Functions/MessengerTrackServices.swift
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerTrackServices.swift
@@ -4,6 +4,7 @@ import XXClient
 public struct MessengerTrackServices {
   public enum Error: Swift.Error, Equatable {
     case notLoaded
+    case notConnected
   }
 
   public typealias OnError = (Swift.Error) -> Void
@@ -21,6 +22,9 @@ extension MessengerTrackServices {
       guard let cMix = env.cMix() else {
         throw Error.notLoaded
       }
+      guard let e2e = env.e2e() else {
+        throw Error.notConnected
+      }
       let callback = TrackServicesCallback { result in
         switch result {
         case .success(let serviceList):
@@ -30,7 +34,10 @@ extension MessengerTrackServices {
           onError(error)
         }
       }
-      cMix.trackServices(callback: callback)
+      try cMix.trackServicesWithIdentity(
+        e2eId: e2e.getId(),
+        callback: callback
+      )
     }
   }
 }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerTrackServicesTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerTrackServicesTests.swift
index 557832e3..55fc5e31 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerTrackServicesTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerTrackServicesTests.swift
@@ -9,7 +9,9 @@ final class MessengerTrackServicesTests: XCTestCase {
     struct Failure: Error, Equatable {}
     let failure = Failure()
     let serviceList = MessageServiceList.stub()
+    let e2eId = 123
 
+    var didTrackServicesWithIdentity: [Int] = []
     var didSetServiceList: [MessageServiceList?] = []
     var didReceiveError: [Error] = []
     var callbacks: [TrackServicesCallback] = []
@@ -20,17 +22,24 @@ final class MessengerTrackServicesTests: XCTestCase {
     }
     env.cMix.get = {
       var cMix: CMix = .unimplemented
-      cMix.trackServices.run = { callback in
+      cMix.trackServicesWithIdentity.run = { e2eId, callback in
+        didTrackServicesWithIdentity.append(e2eId)
         callbacks.append(callback)
       }
       return cMix
     }
+    env.e2e.get = {
+      var e2e: E2E = .unimplemented
+      e2e.getId.run = { e2eId }
+      return e2e
+    }
     let track: MessengerTrackServices = .live(env)
 
     try track(onError: { error in
       didReceiveError.append(error)
     })
 
+    XCTAssertNoDifference(didTrackServicesWithIdentity, [e2eId])
     XCTAssertEqual(callbacks.count, 1)
 
     didSetServiceList = []
@@ -56,8 +65,22 @@ final class MessengerTrackServicesTests: XCTestCase {
 
     XCTAssertThrowsError(try track(onError: unimplemented())) { error in
       XCTAssertNoDifference(
-        error as NSError,
-        MessengerTrackServices.Error.notLoaded as NSError
+        error as? MessengerTrackServices.Error,
+        .notLoaded
+      )
+    }
+  }
+
+  func testTrackWhenNotConnected() {
+    var env: MessengerEnvironment = .unimplemented
+    env.cMix.get = { .unimplemented }
+    env.e2e.get = { nil }
+    let track: MessengerTrackServices = .live(env)
+
+    XCTAssertThrowsError(try track(onError: unimplemented())) { error in
+      XCTAssertNoDifference(
+        error as? MessengerTrackServices.Error,
+        .notConnected
       )
     }
   }
-- 
GitLab