You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2022/09/21 22:50:34 UTC
[superset] branch master updated: feat(nav): Update Tabbed Nav on CRUD Pages (#21213)
This is an automated email from the ASF dual-hosted git repository.
elizabeth 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 fb835d1437 feat(nav): Update Tabbed Nav on CRUD Pages (#21213)
fb835d1437 is described below
commit fb835d143705a94ca229c651a4c7f7dbc1675ed2
Author: Antonio Rivero Martinez <38...@users.noreply.github.com>
AuthorDate: Wed Sep 21 19:50:21 2022 -0300
feat(nav): Update Tabbed Nav on CRUD Pages (#21213)
---
superset-frontend/src/views/CRUD/data/common.ts | 14 +------------
.../views/CRUD/data/database/DatabaseList.test.jsx | 4 ++++
.../src/views/CRUD/data/database/DatabaseList.tsx | 3 +--
.../views/CRUD/data/dataset/DatasetList.test.jsx | 9 +++++++++
.../src/views/CRUD/data/dataset/DatasetList.tsx | 3 +--
.../src/views/CRUD/data/query/QueryList.test.tsx | 23 ++++++++++++++++++++++
.../CRUD/data/savedquery/SavedQueryList.test.jsx | 18 +++++++++++++++++
7 files changed, 57 insertions(+), 17 deletions(-)
diff --git a/superset-frontend/src/views/CRUD/data/common.ts b/superset-frontend/src/views/CRUD/data/common.ts
index c6708c4511..634176145b 100644
--- a/superset-frontend/src/views/CRUD/data/common.ts
+++ b/superset-frontend/src/views/CRUD/data/common.ts
@@ -19,20 +19,8 @@
import { t } from '@superset-ui/core';
export const commonMenuData = {
- name: t('Data'),
+ name: t('SQL'),
tabs: [
- {
- name: 'Databases',
- label: t('Databases'),
- url: '/databaseview/list/',
- usesRouter: true,
- },
- {
- name: 'Datasets',
- label: t('Datasets'),
- url: '/tablemodelview/list/',
- usesRouter: true,
- },
{
name: 'Saved queries',
label: t('Saved queries'),
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 1cc66ef9e3..d30dbce6e5 100644
--- a/superset-frontend/src/views/CRUD/data/database/DatabaseList.test.jsx
+++ b/superset-frontend/src/views/CRUD/data/database/DatabaseList.test.jsx
@@ -139,6 +139,10 @@ describe('Admin DatabaseList', () => {
expect(wrapper.find(SubMenu)).toExist();
});
+ it('renders a SubMenu with no tabs', () => {
+ expect(wrapper.find(SubMenu).props().tabs).toBeUndefined();
+ });
+
it('renders a DatabaseModal', () => {
expect(wrapper.find(DatabaseModal)).toExist();
});
diff --git a/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx b/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx
index 2a770dc36e..f217a60ec4 100644
--- a/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx
+++ b/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx
@@ -35,7 +35,6 @@ import { Tooltip } from 'src/components/Tooltip';
import Icons from 'src/components/Icons';
import { isUserAdmin } from 'src/dashboard/util/permissionUtils';
import ListView, { FilterOperator, Filters } from 'src/components/ListView';
-import { commonMenuData } from 'src/views/CRUD/data/common';
import handleResourceExport from 'src/utils/export';
import { ExtentionConfigs } from 'src/views/components/types';
import { UserWithPermissionsAndRoles } from 'src/types/bootstrapTypes';
@@ -247,7 +246,7 @@ function DatabaseList({ addDangerToast, addSuccessToast }: DatabaseListProps) {
const menuData: SubMenuProps = {
activeChild: 'Databases',
dropDownLinks: filteredDropDown,
- ...commonMenuData,
+ name: t('Databases'),
};
if (canCreate) {
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 a2c2ab6954..b2f5d06a77 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx
@@ -33,6 +33,7 @@ import Button from 'src/components/Button';
import IndeterminateCheckbox from 'src/components/IndeterminateCheckbox';
import waitForComponentToPaint from 'spec/helpers/waitForComponentToPaint';
import { act } from 'react-dom/test-utils';
+import SubMenu from 'src/views/components/SubMenu';
// store needed for withToasts(DatasetList)
const mockStore = configureStore([thunk]);
@@ -223,6 +224,14 @@ describe('DatasetList', () => {
});
expect(fetchMock.calls(/dataset\/duplicate/)).toHaveLength(1);
});
+
+ it('renders a SubMenu', () => {
+ expect(wrapper.find(SubMenu)).toExist();
+ });
+
+ it('renders a SubMenu with no tabs', () => {
+ expect(wrapper.find(SubMenu).props().tabs).toBeUndefined();
+ });
});
jest.mock('react-router-dom', () => ({
diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx b/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx
index 265a692bb6..27750eab32 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx
@@ -48,7 +48,6 @@ import SubMenu, {
SubMenuProps,
ButtonProps,
} from 'src/views/components/SubMenu';
-import { commonMenuData } from 'src/views/CRUD/data/common';
import Owner from 'src/types/Owner';
import withToasts from 'src/components/MessageToasts/withToasts';
import { Tooltip } from 'src/components/Tooltip';
@@ -585,7 +584,7 @@ const DatasetList: FunctionComponent<DatasetListProps> = ({
const menuData: SubMenuProps = {
activeChild: 'Datasets',
- ...commonMenuData,
+ name: t('Datasets'),
};
const buttonArr: Array<ButtonProps> = [];
diff --git a/superset-frontend/src/views/CRUD/data/query/QueryList.test.tsx b/superset-frontend/src/views/CRUD/data/query/QueryList.test.tsx
index 83ecc588b2..eaaa75a1cb 100644
--- a/superset-frontend/src/views/CRUD/data/query/QueryList.test.tsx
+++ b/superset-frontend/src/views/CRUD/data/query/QueryList.test.tsx
@@ -32,6 +32,7 @@ import { QueryObject } from 'src/views/CRUD/types';
import ListView from 'src/components/ListView';
import Filters from 'src/components/ListView/Filters';
import SyntaxHighlighter from 'react-syntax-highlighter/dist/cjs/light';
+import SubMenu from 'src/views/components/SubMenu';
// store needed for withToasts
const mockStore = configureStore([thunk]);
@@ -147,4 +148,26 @@ describe('QueryList', () => {
`"http://localhost/api/v1/query/?q=(filters:!((col:sql,opr:ct,value:fooo)),order_column:start_time,order_direction:desc,page:0,page_size:25)"`,
);
});
+
+ it('renders a SubMenu', () => {
+ expect(wrapper.find(SubMenu)).toExist();
+ });
+
+ it('renders a SubMenu with Saved queries and Query History links', () => {
+ expect(wrapper.find(SubMenu).props().tabs).toEqual(
+ expect.arrayContaining([
+ expect.objectContaining({ label: 'Saved queries' }),
+ expect.objectContaining({ label: 'Query history' }),
+ ]),
+ );
+ });
+
+ it('renders a SubMenu without Databases and Datasets links', () => {
+ expect(wrapper.find(SubMenu).props().tabs).not.toEqual(
+ expect.arrayContaining([
+ expect.objectContaining({ label: 'Databases' }),
+ expect.objectContaining({ label: 'Datasets' }),
+ ]),
+ );
+ });
});
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 456fe2f394..3acf44faad 100644
--- a/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.test.jsx
+++ b/superset-frontend/src/views/CRUD/data/savedquery/SavedQueryList.test.jsx
@@ -153,6 +153,24 @@ describe('SavedQueryList', () => {
expect(wrapper.find(SubMenu)).toExist();
});
+ it('renders a SubMenu with Saved queries and Query History links', () => {
+ expect(wrapper.find(SubMenu).props().tabs).toEqual(
+ expect.arrayContaining([
+ expect.objectContaining({ label: 'Saved queries' }),
+ expect.objectContaining({ label: 'Query history' }),
+ ]),
+ );
+ });
+
+ it('renders a SubMenu without Databases and Datasets links', () => {
+ expect(wrapper.find(SubMenu).props().tabs).not.toEqual(
+ expect.arrayContaining([
+ expect.objectContaining({ label: 'Databases' }),
+ expect.objectContaining({ label: 'Datasets' }),
+ ]),
+ );
+ });
+
it('renders a ListView', () => {
expect(wrapper.find(ListView)).toExist();
});