From 4b6233873a832e3c5f38996d3b32e11c68d459b6 Mon Sep 17 00:00:00 2001
From: Anton Kulyk <kuliks.anton@gmail.com>
Date: Wed, 9 Jun 2021 13:07:24 +0300
Subject: [PATCH] Fix bulk archive broken (#16500)

* Add repro for #16496 (bulk archive broken)

* Add E2E test for bulk move

* Fix bulk archive

* Remove reduntant checks

* Use `cy.button()`

Co-authored-by: Nemanja <31325167+nemanjaglumac@users.noreply.github.com>
---
 .../containers/CollectionContent.jsx          |  4 +-
 .../collections/collections.cy.spec.js        | 39 +++++++++++++++++++
 2 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/frontend/src/metabase/collections/containers/CollectionContent.jsx b/frontend/src/metabase/collections/containers/CollectionContent.jsx
index 3252fd47463..4be39821c1a 100644
--- a/frontend/src/metabase/collections/containers/CollectionContent.jsx
+++ b/frontend/src/metabase/collections/containers/CollectionContent.jsx
@@ -66,11 +66,11 @@ function CollectionContent({
 
   const handleBulkArchive = useCallback(async () => {
     try {
-      await Promise.all(selectedItems.map(item => item.setArchived(true)));
+      await Promise.all(selected.map(item => item.setArchived(true)));
     } finally {
       clear();
     }
-  }, [selectedItems, clear]);
+  }, [selected, clear]);
 
   const handleBulkMoveStart = () => {
     setSelectedItems(selected);
diff --git a/frontend/test/metabase/scenarios/collections/collections.cy.spec.js b/frontend/test/metabase/scenarios/collections/collections.cy.spec.js
index 9581f062c6c..d642f3ad476 100644
--- a/frontend/test/metabase/scenarios/collections/collections.cy.spec.js
+++ b/frontend/test/metabase/scenarios/collections/collections.cy.spec.js
@@ -622,6 +622,45 @@ describe("scenarios > collection_defaults", () => {
           cy.findByTestId("bulk-action-bar").should("not.be.visible");
         }
       });
+
+      describe("archive", () => {
+        it("should be possible to bulk archive items (metabase#16496)", () => {
+          cy.visit("/collection/root");
+          selectItemUsingCheckbox("Orders");
+
+          cy.findByTestId("bulk-action-bar")
+            .button("Archive")
+            .click();
+
+          cy.findByText("Orders").should("not.exist");
+          cy.findByTestId("bulk-action-bar").should("not.be.visible");
+        });
+      });
+
+      describe("move", () => {
+        it("should be possible to bulk move items", () => {
+          cy.visit("/collection/root");
+          selectItemUsingCheckbox("Orders");
+
+          cy.findByTestId("bulk-action-bar")
+            .button("Move")
+            .click();
+
+          modal().within(() => {
+            cy.findByText("First collection").click();
+            cy.button("Move").click();
+          });
+
+          cy.findByText("Orders").should("not.exist");
+          cy.findByTestId("bulk-action-bar").should("not.be.visible");
+
+          // Check that items were actually moved
+          sidebar()
+            .findByText("First collection")
+            .click();
+          cy.findByText("Orders");
+        });
+      });
     });
   });
 });
-- 
GitLab