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