From be76a5cef8472fa3379673f5d0420767fe9f6986 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Tue, 8 Nov 2022 23:07:29 +0100
Subject: [PATCH] Update MessengerDestroy

Reset stored services list on destroy
---
 .../Messenger/Functions/MessengerDestroy.swift           | 1 +
 .../Messenger/Functions/MessengerDestroyTests.swift      | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift
index c7ee476c..b2b18a4d 100644
--- a/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift
@@ -25,6 +25,7 @@ extension MessengerDestroy {
       env.e2e.set(nil)
       env.cMix.set(nil)
       env.isListeningForMessages.set(false)
+      env.serviceList.set(nil)
       try env.fileManager.removeItem(env.storageDir)
       try env.passwordStorage.remove()
     }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift
index 927bc9e3..3f87cacb 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift
@@ -17,6 +17,7 @@ final class MessengerDestroyTests: XCTestCase {
     var didSetCMix: [CMix?] = []
     var didRemovePassword = 0
     var didSetIsListeningForMessages: [Bool] = []
+    var didSetServiceList: [MessageServiceList?] = []
 
     var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
@@ -34,6 +35,7 @@ final class MessengerDestroyTests: XCTestCase {
     env.e2e.set = { didSetE2E.append($0) }
     env.cMix.set = { didSetCMix.append($0) }
     env.isListeningForMessages.set = { didSetIsListeningForMessages.append($0) }
+    env.serviceList.set = { didSetServiceList.append($0) }
     env.fileManager.removeItem = { didRemoveItem.append($0) }
     env.passwordStorage.remove = { didRemovePassword += 1 }
     let destroy: MessengerDestroy = .live(env)
@@ -48,6 +50,7 @@ final class MessengerDestroyTests: XCTestCase {
     XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetIsListeningForMessages, [false])
+    XCTAssertNoDifference(didSetServiceList.map { $0 == nil }, [true])
     XCTAssertNoDifference(didRemoveItem, [storageDir])
     XCTAssertNoDifference(didRemovePassword, 1)
   }
@@ -79,6 +82,7 @@ final class MessengerDestroyTests: XCTestCase {
     var didSetE2E: [E2E?] = []
     var didSetCMix: [CMix?] = []
     var didSetIsListeningForMessages: [Bool] = []
+    var didSetServiceList: [MessageServiceList?] = []
 
     var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
@@ -88,6 +92,7 @@ final class MessengerDestroyTests: XCTestCase {
     env.e2e.set = { didSetE2E.append($0) }
     env.cMix.set = { didSetCMix.append($0) }
     env.isListeningForMessages.set = { didSetIsListeningForMessages.append($0) }
+    env.serviceList.set = { didSetServiceList.append($0) }
     env.fileManager.removeItem = { _ in throw error }
     let destroy: MessengerDestroy = .live(env)
 
@@ -100,6 +105,7 @@ final class MessengerDestroyTests: XCTestCase {
     XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetIsListeningForMessages, [false])
+    XCTAssertNoDifference(didSetServiceList.map { $0 == nil }, [true])
   }
 
   func testRemovePasswordFailure() {
@@ -113,6 +119,7 @@ final class MessengerDestroyTests: XCTestCase {
     var didSetE2E: [E2E?] = []
     var didSetCMix: [CMix?] = []
     var didSetIsListeningForMessages: [Bool] = []
+    var didSetServiceList: [MessageServiceList?] = []
 
     var env: MessengerEnvironment = .unimplemented
     env.cMix.get = { nil }
@@ -122,6 +129,7 @@ final class MessengerDestroyTests: XCTestCase {
     env.e2e.set = { didSetE2E.append($0) }
     env.cMix.set = { didSetCMix.append($0) }
     env.isListeningForMessages.set = { didSetIsListeningForMessages.append($0) }
+    env.serviceList.set = { didSetServiceList.append($0) }
     env.storageDir = storageDir
     env.fileManager.removeItem = { didRemoveItem.append($0) }
     env.passwordStorage.remove = { throw error }
@@ -136,6 +144,7 @@ final class MessengerDestroyTests: XCTestCase {
     XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetIsListeningForMessages, [false])
+    XCTAssertNoDifference(didSetServiceList.map { $0 == nil }, [true])
     XCTAssertNoDifference(didRemoveItem, [storageDir])
   }
 }
-- 
GitLab