From 21c6725ccd2d9b1c061ad1dc562003c423b97ae5 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Tue, 29 Nov 2022 10:52:20 +0100
Subject: [PATCH] Add MessengerIsGroupChatRunning

---
 .../MessengerIsGroupChatRunning.swift         | 21 +++++++++++++++++++
 .../Messenger/Messenger.swift                 |  3 +++
 .../MessengerIsGroupChatRunningTests.swift    | 20 ++++++++++++++++++
 3 files changed, 44 insertions(+)
 create mode 100644 Sources/XXMessengerClient/Messenger/Functions/MessengerIsGroupChatRunning.swift
 create mode 100644 Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsGroupChatRunningTests.swift

diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerIsGroupChatRunning.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerIsGroupChatRunning.swift
new file mode 100644
index 00000000..ce177d5d
--- /dev/null
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerIsGroupChatRunning.swift
@@ -0,0 +1,21 @@
+import XCTestDynamicOverlay
+
+public struct MessengerIsGroupChatRunning {
+  public var run: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    run()
+  }
+}
+
+extension MessengerIsGroupChatRunning {
+  public static func live(_ env: MessengerEnvironment) -> MessengerIsGroupChatRunning {
+    MessengerIsGroupChatRunning { env.groupChat.get() != nil }
+  }
+}
+
+extension MessengerIsGroupChatRunning {
+  public static let unimplemented = MessengerIsGroupChatRunning(
+    run: XCTestDynamicOverlay.unimplemented("\(Self.self)", placeholder: false)
+  )
+}
diff --git a/Sources/XXMessengerClient/Messenger/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift
index 44b213cb..aefef17d 100644
--- a/Sources/XXMessengerClient/Messenger/Messenger.swift
+++ b/Sources/XXMessengerClient/Messenger/Messenger.swift
@@ -51,6 +51,7 @@ public struct Messenger {
   public var getNotificationReports: MessengerGetNotificationReports
   public var registerGroupRequestHandler: MessengerRegisterGroupRequestHandler
   public var registerGroupChatProcessor: MessengerRegisterGroupChatProcessor
+  public var isGroupChatRunning: MessengerIsGroupChatRunning
   public var startGroupChat: MessengerStartGroupChat
 }
 
@@ -107,6 +108,7 @@ extension Messenger {
       getNotificationReports: .live(env),
       registerGroupRequestHandler: .live(env),
       registerGroupChatProcessor: .live(env),
+      isGroupChatRunning: .live(env),
       startGroupChat: .live(env)
     )
   }
@@ -164,6 +166,7 @@ extension Messenger {
     getNotificationReports: .unimplemented,
     registerGroupRequestHandler: .unimplemented,
     registerGroupChatProcessor: .unimplemented,
+    isGroupChatRunning: .unimplemented,
     startGroupChat: .unimplemented
   )
 }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsGroupChatRunningTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsGroupChatRunningTests.swift
new file mode 100644
index 00000000..364c1203
--- /dev/null
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerIsGroupChatRunningTests.swift
@@ -0,0 +1,20 @@
+import XCTest
+@testable import XXMessengerClient
+
+final class MessengerIsGroupChatRunningTests: XCTestCase {
+  func testIsRunning() {
+    var env: MessengerEnvironment = .unimplemented
+    env.groupChat.get = { .unimplemented }
+    let isRunning: MessengerIsGroupChatRunning = .live(env)
+
+    XCTAssertTrue(isRunning())
+  }
+
+  func testIsNotRunning() {
+    var env: MessengerEnvironment = .unimplemented
+    env.groupChat.get = { nil }
+    let isRunning: MessengerIsGroupChatRunning = .live(env)
+
+    XCTAssertFalse(isRunning())
+  }
+}
-- 
GitLab