From 75be28c2698f99f06caf04029eea4a2eef1fff2f Mon Sep 17 00:00:00 2001
From: Alexander Polyankin <alexander.polyankin@metabase.com>
Date: Wed, 5 Jan 2022 13:44:29 +0300
Subject: [PATCH] Fix group caching issue (#19526)

---
 .../people/containers/GroupsListingApp.jsx    |  2 +-
 .../12693-group-count.cy.spec.js              | 43 +++++++++++++++++++
 2 files changed, 44 insertions(+), 1 deletion(-)
 create mode 100644 frontend/test/metabase/scenarios/admin/people/reproductions/12693-group-count.cy.spec.js

diff --git a/frontend/src/metabase/admin/people/containers/GroupsListingApp.jsx b/frontend/src/metabase/admin/people/containers/GroupsListingApp.jsx
index 925c5e0abdc..12e0ea996b7 100644
--- a/frontend/src/metabase/admin/people/containers/GroupsListingApp.jsx
+++ b/frontend/src/metabase/admin/people/containers/GroupsListingApp.jsx
@@ -5,7 +5,7 @@ import Group from "metabase/entities/groups";
 import GroupsListing from "../components/GroupsListing";
 import { getGroupsWithoutMetabot } from "../selectors";
 
-@Group.loadList()
+@Group.loadList({ reload: true })
 @connect((state, props) => ({
   groups: getGroupsWithoutMetabot(state, props),
 }))
diff --git a/frontend/test/metabase/scenarios/admin/people/reproductions/12693-group-count.cy.spec.js b/frontend/test/metabase/scenarios/admin/people/reproductions/12693-group-count.cy.spec.js
new file mode 100644
index 00000000000..e54cfe80d55
--- /dev/null
+++ b/frontend/test/metabase/scenarios/admin/people/reproductions/12693-group-count.cy.spec.js
@@ -0,0 +1,43 @@
+import { restore } from "__support__/e2e/cypress";
+
+const GROUP = "collection";
+
+describe("should update group count after editing a group", () => {
+  beforeEach(() => {
+    restore();
+    cy.signInAsAdmin();
+  });
+
+  it("should update the group count after adding a user to a group (metabase#12693)", () => {
+    cy.visit("/admin/people/groups");
+
+    findRow(GROUP).within(() => cy.findByText("3"));
+    cy.findByText(GROUP).click();
+
+    cy.findByText("Add members").click();
+    cy.focused().type("Bobby");
+    cy.findByText("Bobby Tables").click();
+    cy.findByText("Add").click();
+    cy.findByText("4 members");
+
+    cy.findByText("Groups").click();
+    findRow(GROUP).within(() => cy.findByText("4"));
+  });
+
+  it("should update the group count after removing a user from a group (metabase#12693)", () => {
+    cy.visit("/admin/people/groups");
+
+    findRow(GROUP).within(() => cy.findByText("3"));
+    cy.findByText(GROUP).click();
+
+    findRow("User 1").within(() => cy.findByLabelText("close icon").click());
+    cy.findByText("2 members");
+
+    cy.findByText("Groups").click();
+    findRow(GROUP).within(() => cy.findByText("2"));
+  });
+});
+
+const findRow = text => {
+  return cy.findByText(text).parentsUntil("tbody", "tr");
+};
-- 
GitLab