From aef5715ce78d9c194f022a629c0552a56f4e977e Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Wed, 30 Nov 2022 11:52:12 +0100
Subject: [PATCH] Dismiss new group when finished

---
 .../GroupsFeature/GroupsComponent.swift       |  4 +++
 .../NewGroupFeature/NewGroupComponent.swift   |  4 +++
 .../GroupsComponentTests.swift                | 28 ++++++++++++++++++-
 .../NewGroupComponentTests.swift              | 10 +++++++
 4 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift b/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift
index e5b01a9e..3594c339 100644
--- a/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift
+++ b/Examples/xx-messenger/Sources/GroupsFeature/GroupsComponent.swift
@@ -62,6 +62,10 @@ public struct GroupsComponent: ReducerProtocol {
         state.newGroup = nil
         return .none
 
+      case .newGroup(.didFinish):
+        state.newGroup = nil
+        return .none
+
       case .newGroup(_):
         return .none
       }
diff --git a/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupComponent.swift b/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupComponent.swift
index 51825779..db9193d0 100644
--- a/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupComponent.swift
+++ b/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupComponent.swift
@@ -7,6 +7,7 @@ public struct NewGroupComponent: ReducerProtocol {
 
   public enum Action: Equatable {
     case start
+    case didFinish
   }
 
   public init() {}
@@ -15,6 +16,9 @@ public struct NewGroupComponent: ReducerProtocol {
     switch action {
     case .start:
       return .none
+
+    case .didFinish:
+      return .none
     }
   }
 }
diff --git a/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift b/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift
index 7a7f9301..f8b06a18 100644
--- a/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift
+++ b/Examples/xx-messenger/Tests/GroupsFeatureTests/GroupsComponentTests.swift
@@ -75,7 +75,7 @@ final class GroupsComponentTests: XCTestCase {
     store.send(.didSelectGroup(.stub(2)))
   }
 
-  func testNewGroup() {
+  func testPresentNewGroup() {
     let store = TestStore(
       initialState: GroupsComponent.State(),
       reducer: GroupsComponent()
@@ -89,6 +89,32 @@ final class GroupsComponentTests: XCTestCase {
       $0.newGroup = nil
     }
   }
+
+  func testDismissNewGroup() {
+    let store = TestStore(
+      initialState: GroupsComponent.State(
+        newGroup: NewGroupComponent.State()
+      ),
+      reducer: GroupsComponent()
+    )
+
+    store.send(.newGroupDismissed) {
+      $0.newGroup = nil
+    }
+  }
+
+  func testNewGroupDidFinish() {
+    let store = TestStore(
+      initialState: GroupsComponent.State(
+        newGroup: NewGroupComponent.State()
+      ),
+      reducer: GroupsComponent()
+    )
+
+    store.send(.newGroup(.didFinish)) {
+      $0.newGroup = nil
+    }
+  }
 }
 
 private extension XXModels.Group {
diff --git a/Examples/xx-messenger/Tests/NewGroupFeatureTests/NewGroupComponentTests.swift b/Examples/xx-messenger/Tests/NewGroupFeatureTests/NewGroupComponentTests.swift
index 7054cec9..2db124d7 100644
--- a/Examples/xx-messenger/Tests/NewGroupFeatureTests/NewGroupComponentTests.swift
+++ b/Examples/xx-messenger/Tests/NewGroupFeatureTests/NewGroupComponentTests.swift
@@ -10,5 +10,15 @@ final class NewGroupComponentTests: XCTestCase {
     )
 
     store.send(.start)
+    store.send(.didFinish)
+  }
+
+  func testFinish() {
+    let store = TestStore(
+      initialState: NewGroupComponent.State(),
+      reducer: NewGroupComponent()
+    )
+
+    store.send(.didFinish)
   }
 }
-- 
GitLab