You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ly...@apache.org on 2022/09/22 20:16:19 UTC
[superset] 01/01: header is now uneditable and holds proper default values
This is an automated email from the ASF dual-hosted git repository.
lyndsi pushed a commit to branch lyndsi/uneditable-header
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 895abb4e038cd730ffdb71a48e8cfb5d51903b31
Author: lyndsiWilliams <kc...@gmail.com>
AuthorDate: Tue Sep 20 11:28:31 2022 -0500
header is now uneditable and holds proper default values
---
.../data/dataset/AddDataset/Header/Header.test.tsx | 47 +++++++---------------
.../CRUD/data/dataset/AddDataset/Header/index.tsx | 12 +++---
.../data/dataset/AddDataset/LeftPanel/index.tsx | 2 +-
.../views/CRUD/data/dataset/AddDataset/index.tsx | 8 +++-
4 files changed, 29 insertions(+), 40 deletions(-)
diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/Header.test.tsx b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/Header.test.tsx
index d4058d8ca7..4c7c693619 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/Header.test.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/Header.test.tsx
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-import userEvent from '@testing-library/user-event';
import React from 'react';
import { render, screen, waitFor } from 'spec/helpers/testing-library';
import Header from 'src/views/CRUD/data/dataset/AddDataset/Header';
@@ -24,17 +23,13 @@ import Header from 'src/views/CRUD/data/dataset/AddDataset/Header';
describe('Header', () => {
const mockSetDataset = jest.fn();
- const waitForRender = (datasetName: string) =>
- waitFor(() =>
- render(<Header setDataset={mockSetDataset} datasetName={datasetName} />),
- );
+ const waitForRender = (props?: any) =>
+ waitFor(() => render(<Header setDataset={mockSetDataset} {...props} />));
- it('renders a blank state Header', async () => {
- await waitForRender('');
+ test('renders a blank state Header', async () => {
+ await waitForRender();
- const datasetNameTextbox = screen.getByRole('textbox', {
- name: /dataset name/i,
- });
+ const datasetName = screen.getByTestId('editable-title');
const saveButton = screen.getByRole('button', {
name: /save save/i,
});
@@ -42,38 +37,26 @@ describe('Header', () => {
name: /menu actions trigger/i,
});
- expect(datasetNameTextbox).toBeVisible();
+ expect(datasetName).toBeVisible();
expect(saveButton).toBeVisible();
expect(saveButton).toBeDisabled();
expect(menuButton).toBeVisible();
expect(menuButton).toBeDisabled();
});
- it('updates display value of dataset name textbox when Header title is changed', async () => {
- await waitForRender('');
-
- const datasetNameTextbox = screen.getByRole('textbox', {
- name: /dataset name/i,
- });
+ test('displays "New dataset" when a table is not selected', async () => {
+ await waitForRender();
- // Textbox should start with an empty display value and placeholder text
- expect(datasetNameTextbox).toHaveDisplayValue('');
- expect(
- screen.getByPlaceholderText(/add the name of the dataset/i),
- ).toBeVisible();
-
- // Textbox should update its display value when user inputs a new value
- userEvent.type(datasetNameTextbox, 'Test name');
- expect(datasetNameTextbox).toHaveDisplayValue('Test name');
+ const datasetName = screen.getByTestId('editable-title');
+ expect(datasetName.innerHTML).toBe('New dataset');
});
- it('passes an existing dataset title into the dataset name textbox', async () => {
- await waitForRender('Existing Dataset Name');
+ test('displays table name when a table is selected', async () => {
+ // The schema and table name are passed in through props once selected
+ await waitForRender({ schema: 'testSchema', title: 'testTable' });
- const datasetNameTextbox = screen.getByRole('textbox', {
- name: /dataset name/i,
- });
+ const datasetName = screen.getByTestId('editable-title');
- expect(datasetNameTextbox).toHaveDisplayValue('Existing Dataset Name');
+ expect(datasetName.innerHTML).toBe('testTable');
});
});
diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/index.tsx b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/index.tsx
index b4cf81d032..bdde65967f 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/index.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/index.tsx
@@ -59,21 +59,23 @@ const renderOverlay = () => (
export default function Header({
setDataset,
- datasetName,
+ title,
+ schema,
}: {
setDataset: React.Dispatch<DSReducerActionType>;
- datasetName: string;
+ title: string;
+ schema?: string;
}) {
const editableTitleProps = {
- title: datasetName,
- placeholder: t('Add the name of the dataset'),
+ title: schema ? title : t('New dataset'),
+ placeholder: t('New dataset'),
onSave: (newDatasetName: string) => {
setDataset({
type: DatasetActionType.changeDataset,
payload: { name: 'dataset_name', value: newDatasetName },
});
},
- canEdit: true,
+ canEdit: false,
label: t('dataset name'),
};
diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/index.tsx b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/index.tsx
index bcc7a4a0db..a35a9f4cf0 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/index.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/index.tsx
@@ -41,7 +41,7 @@ import { DatasetActionType } from '../types';
interface LeftPanelProps {
setDataset: Dispatch<SetStateAction<object>>;
- schema?: string | undefined | null;
+ schema?: string;
dbId?: number;
}
diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/index.tsx b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/index.tsx
index 5500d5ded2..37f21ffce6 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/index.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/index.tsx
@@ -71,13 +71,17 @@ export default function AddDataset() {
>(datasetReducer, null);
const HeaderComponent = () => (
- <Header setDataset={setDataset} datasetName={dataset?.dataset_name ?? ''} />
+ <Header
+ setDataset={setDataset}
+ title={dataset?.table_name ?? 'New dataset'}
+ schema={dataset?.schema ?? ''}
+ />
);
const LeftPanelComponent = () => (
<LeftPanel
setDataset={setDataset}
- schema={dataset?.schema}
+ schema={dataset?.schema ?? ''}
dbId={dataset?.db?.id}
/>
);