This is an automated email from the ASF dual-hosted git repository.

beto pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 6921d94  fix: show Import button only if has perms (#16763)
6921d94 is described below

commit 6921d948617d7af6b009f3033265bb9f1073f0e6
Author: Beto Dealmeida <[email protected]>
AuthorDate: Thu Sep 23 14:55:21 2021 -0700

    fix: show Import button only if has perms (#16763)
    
    * fix: show Import button only if has perms
    
    * Fix tests
---
 .../src/views/CRUD/chart/ChartList.test.jsx        |  2 +-
 .../src/views/CRUD/chart/ChartList.tsx             | 31 +++++++++++-----------
 .../views/CRUD/dashboard/DashboardList.test.jsx    |  2 +-
 .../src/views/CRUD/dashboard/DashboardList.tsx     | 31 +++++++++++-----------
 .../views/CRUD/data/database/DatabaseList.test.jsx |  2 +-
 .../views/CRUD/data/dataset/DatasetList.test.jsx   |  2 +-
 .../src/views/CRUD/data/dataset/DatasetList.tsx    | 30 ++++++++++-----------
 .../CRUD/data/savedquery/SavedQueryList.test.jsx   | 14 +++++-----
 .../views/CRUD/data/savedquery/SavedQueryList.tsx  |  3 ++-
 9 files changed, 60 insertions(+), 57 deletions(-)

diff --git a/superset-frontend/src/views/CRUD/chart/ChartList.test.jsx 
b/superset-frontend/src/views/CRUD/chart/ChartList.test.jsx
index 894aa4e..394c8b6 100644
--- a/superset-frontend/src/views/CRUD/chart/ChartList.test.jsx
+++ b/superset-frontend/src/views/CRUD/chart/ChartList.test.jsx
@@ -190,7 +190,7 @@ describe('RTL', () => {
   });
 
   it('renders an "Import Chart" tooltip under import button', async () => {
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     userEvent.hover(importButton);
 
     await screen.findByRole('tooltip');
diff --git a/superset-frontend/src/views/CRUD/chart/ChartList.tsx 
b/superset-frontend/src/views/CRUD/chart/ChartList.tsx
index 547482a..6f3e7b7 100644
--- a/superset-frontend/src/views/CRUD/chart/ChartList.tsx
+++ b/superset-frontend/src/views/CRUD/chart/ChartList.tsx
@@ -586,21 +586,22 @@ function ChartList(props: ChartListProps) {
         window.location.assign('/chart/add');
       },
     });
-  }
-  if (isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
-    subMenuButtons.push({
-      name: (
-        <Tooltip
-          id="import-tooltip"
-          title={t('Import charts')}
-          placement="bottomRight"
-        >
-          <Icons.Import data-test="import-button" />
-        </Tooltip>
-      ),
-      buttonStyle: 'link',
-      onClick: openChartImportModal,
-    });
+
+    if (isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
+      subMenuButtons.push({
+        name: (
+          <Tooltip
+            id="import-tooltip"
+            title={t('Import charts')}
+            placement="bottomRight"
+          >
+            <Icons.Import data-test="import-button" />
+          </Tooltip>
+        ),
+        buttonStyle: 'link',
+        onClick: openChartImportModal,
+      });
+    }
   }
   return (
     <>
diff --git a/superset-frontend/src/views/CRUD/dashboard/DashboardList.test.jsx 
b/superset-frontend/src/views/CRUD/dashboard/DashboardList.test.jsx
index 4bb2043..3561caf 100644
--- a/superset-frontend/src/views/CRUD/dashboard/DashboardList.test.jsx
+++ b/superset-frontend/src/views/CRUD/dashboard/DashboardList.test.jsx
@@ -211,7 +211,7 @@ describe('RTL', () => {
   });
 
   it('renders an "Import Dashboard" tooltip under import button', async () => {
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     userEvent.hover(importButton);
 
     await screen.findByRole('tooltip');
diff --git a/superset-frontend/src/views/CRUD/dashboard/DashboardList.tsx 
b/superset-frontend/src/views/CRUD/dashboard/DashboardList.tsx
index 8d6be33..04c0e8c 100644
--- a/superset-frontend/src/views/CRUD/dashboard/DashboardList.tsx
+++ b/superset-frontend/src/views/CRUD/dashboard/DashboardList.tsx
@@ -553,21 +553,22 @@ function DashboardList(props: DashboardListProps) {
         window.location.assign('/dashboard/new');
       },
     });
-  }
-  if (isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
-    subMenuButtons.push({
-      name: (
-        <Tooltip
-          id="import-tooltip"
-          title={t('Import dashboards')}
-          placement="bottomRight"
-        >
-          <Icons.Import data-test="import-button" />
-        </Tooltip>
-      ),
-      buttonStyle: 'link',
-      onClick: openDashboardImportModal,
-    });
+
+    if (isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
+      subMenuButtons.push({
+        name: (
+          <Tooltip
+            id="import-tooltip"
+            title={t('Import dashboards')}
+            placement="bottomRight"
+          >
+            <Icons.Import data-test="import-button" />
+          </Tooltip>
+        ),
+        buttonStyle: 'link',
+        onClick: openDashboardImportModal,
+      });
+    }
   }
   return (
     <>
diff --git 
a/superset-frontend/src/views/CRUD/data/database/DatabaseList.test.jsx 
b/superset-frontend/src/views/CRUD/data/database/DatabaseList.test.jsx
index 3f8e619..815ae62 100644
--- a/superset-frontend/src/views/CRUD/data/database/DatabaseList.test.jsx
+++ b/superset-frontend/src/views/CRUD/data/database/DatabaseList.test.jsx
@@ -211,7 +211,7 @@ describe('RTL', () => {
   });
 
   it('renders an "Import Database" tooltip under import button', async () => {
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     userEvent.hover(importButton);
 
     await screen.findByRole('tooltip');
diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx 
b/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx
index 11cc3d4..0854f00 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx
@@ -211,7 +211,7 @@ describe('RTL', () => {
   });
 
   it('renders an "Import Dataset" tooltip under import button', async () => {
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     userEvent.hover(importButton);
 
     await screen.findByRole('tooltip');
diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx 
b/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx
index 5b73d54..e8f0583 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx
@@ -512,22 +512,22 @@ const DatasetList: FunctionComponent<DatasetListProps> = 
({
       onClick: () => setDatasetAddModalOpen(true),
       buttonStyle: 'primary',
     });
-  }
 
-  if (isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
-    buttonArr.push({
-      name: (
-        <Tooltip
-          id="import-tooltip"
-          title={t('Import datasets')}
-          placement="bottomRight"
-        >
-          <Icons.Import data-test="import-button" />
-        </Tooltip>
-      ),
-      buttonStyle: 'link',
-      onClick: openDatasetImportModal,
-    });
+    if (isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
+      buttonArr.push({
+        name: (
+          <Tooltip
+            id="import-tooltip"
+            title={t('Import datasets')}
+            placement="bottomRight"
+          >
+            <Icons.Import data-test="import-button" />
+          </Tooltip>
+        ),
+        buttonStyle: 'link',
+        onClick: openDatasetImportModal,
+      });
+    }
   }
 
   menuData.buttons = buttonArr;
diff --git 
a/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.test.jsx 
b/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.test.jsx
index 6bbb384..8e1c60d 100644
--- a/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.test.jsx
+++ b/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.test.jsx
@@ -284,14 +284,14 @@ describe('RTL', () => {
     expect(exportTooltip).toBeInTheDocument();
   });
 
-  it('renders an import button in the submenu', () => {
+  it('renders an import button in the submenu', async () => {
     // Grab and assert that import saved query button is visible
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     expect(importButton).toBeVisible();
   });
 
   it('renders an "Import Saved Query" tooltip under import button', async () 
=> {
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     userEvent.hover(importButton);
     waitFor(() => {
       expect(importButton).toHaveClass('ant-tooltip-open');
@@ -303,9 +303,9 @@ describe('RTL', () => {
     });
   });
 
-  it('renders an import model when import button is clicked', async () => {
+  it('renders an import modal when import button is clicked', async () => {
     // Grab and click import saved query button to reveal modal
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     userEvent.click(importButton);
 
     // Grab and assert that saved query import modal's heading is visible
@@ -315,9 +315,9 @@ describe('RTL', () => {
     expect(importSavedQueryModalHeading).toBeVisible();
   });
 
-  it('imports a saved query', () => {
+  it('imports a saved query', async () => {
     // Grab and click import saved query button to reveal modal
-    const importButton = screen.getByTestId('import-button');
+    const importButton = await screen.findByTestId('import-button');
     userEvent.click(importButton);
 
     // Grab "Choose File" input from import modal
diff --git 
a/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.tsx 
b/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.tsx
index 25eb493..0f6fd5f 100644
--- a/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.tsx
+++ b/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.tsx
@@ -133,6 +133,7 @@ function SavedQueryList({
     refreshData();
   };
 
+  const canCreate = hasPerm('can_write');
   const canEdit = hasPerm('can_write');
   const canDelete = hasPerm('can_write');
   const canExport =
@@ -185,7 +186,7 @@ function SavedQueryList({
     buttonStyle: 'primary',
   });
 
-  if (isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
+  if (canCreate && isFeatureEnabled(FeatureFlag.VERSIONED_EXPORT)) {
     subMenuButtons.push({
       name: (
         <Tooltip

Reply via email to