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

hugh pushed a commit to branch hugh/move-ctas-cvas-fields
in repository https://gitbox.apache.org/repos/asf/superset.git

commit ad8f67181e719913e59cf8a023218dd0c9ac9c33
Merge: 9b07e36 9d6832d
Author: hughhhh <[email protected]>
AuthorDate: Tue Mar 30 18:35:52 2021 -0400

    fix test

 .github/CODEOWNERS                                 |  3 ++
 .github/PULL_REQUEST_TEMPLATE.md                   |  6 ++-
 docs/package-lock.json                             | 24 ++++-----
 docs/src/pages/docs/introduction.mdx               |  2 +-
 .../explore/components/AdhocFilterOption_spec.jsx  |  2 +-
 .../explore/components/AdhocMetricOption_spec.jsx  |  2 +-
 .../explore/components/ColorPickerControl_spec.jsx |  2 +-
 .../explore/components/EmbedCodeButton_spec.jsx    |  2 +-
 .../components/FilterBoxItemControl_spec.jsx       |  2 +-
 .../components/TimeSeriesColumnControl_spec.jsx    |  2 +-
 .../explore/components/ViewportControl_spec.jsx    |  2 +-
 .../views/CRUD/alert/ExecutionLog_spec.jsx         |  1 +
 .../CRUD/data/database/DatabaseModal_spec.jsx      | 17 ++++--
 .../src/SqlLab/components/ResultSet.tsx            | 25 +++------
 .../src/common/components/common.stories.tsx       | 29 ----------
 .../CertifiedIcon/CertifiedIcon.stories.tsx}       | 25 +++++++--
 .../CertifiedIcon/CertifiedIcon.test.tsx           | 47 ++++++++++++++++
 .../index.tsx}                                     |  8 +--
 .../src/components/Checkbox/Checkbox.test.tsx      |  6 ++-
 .../Checkbox/{index.tsx => Checkbox.tsx}           |  5 +-
 .../components/{ => Checkbox}/CheckboxIcons.tsx    |  0
 .../src/components/Checkbox/index.tsx              | 38 +------------
 superset-frontend/src/components/Icon/index.tsx    |  9 +++-
 superset-frontend/src/components/Popover/index.tsx |  2 +-
 .../src/components/TableSelector/index.tsx         |  4 +-
 .../src/components/URLShortLinkButton/index.jsx    |  2 +-
 .../components/FiltersBadge/DetailsPanel.tsx       |  2 +-
 .../dashboard/components/filterscope/treeIcons.jsx |  2 +-
 .../FilterBar/CascadeFilters/CascadePopover.tsx    |  2 +-
 .../FilterBar/FilterControls/FilterValue.tsx       | 36 ++++++++++---
 .../FiltersConfigForm/DefaultValue.tsx             | 62 +++++++---------------
 .../FiltersConfigForm/FiltersConfigForm.tsx        | 30 +++++++----
 .../FiltersConfigModal/FiltersConfigForm/state.ts  | 34 ++++++++++--
 .../src/datasource/DatasourceEditor.jsx            |  4 +-
 .../src/explore/components/EmbedCodeButton.jsx     |  2 +-
 .../components/controls/AnnotationLayerControl.jsx |  2 +-
 .../components/controls/ColorPickerControl.jsx     |  2 +-
 .../controls/DateFilterControl/DateFilterLabel.tsx |  2 +-
 .../components/controls/FilterBoxItemControl.jsx   |  2 +-
 .../FilterControl/AdhocFilterPopoverTrigger.tsx    |  2 +-
 .../MetricControl/AdhocMetricPopoverTrigger.tsx    |  2 +-
 .../explore/components/controls/SelectControl.jsx  |  2 +-
 .../controls/TimeSeriesColumnControl.jsx           |  2 +-
 .../components/controls/ViewportControl.jsx        |  2 +-
 .../src/views/CRUD/alert/ExecutionLog.tsx          | 11 ++++
 superset-frontend/src/views/CRUD/alert/types.ts    |  1 +
 .../src/views/CRUD/data/database/DatabaseModal.tsx | 16 ++++--
 .../src/views/CRUD/data/dataset/DatasetList.tsx    |  4 +-
 .../src/views/CRUD/data/query/QueryList.tsx        |  2 +-
 .../views/CRUD/data/savedquery/SavedQueryList.tsx  |  2 +-
 ...411006_add_execution_id_to_report_execution_.py | 39 ++++++++++++++
 superset/models/reports.py                         |  2 +
 superset/reports/commands/execute.py               | 16 ++++--
 superset/reports/logs/api.py                       |  2 +
 superset/tasks/scheduler.py                        |  5 +-
 tests/reports/commands_tests.py                    | 55 ++++++++++---------
 56 files changed, 367 insertions(+), 247 deletions(-)

diff --cc 
superset-frontend/spec/javascripts/views/CRUD/data/database/DatabaseModal_spec.jsx
index d5e5741,901b18a..78427c4
--- 
a/superset-frontend/spec/javascripts/views/CRUD/data/database/DatabaseModal_spec.jsx
+++ 
b/superset-frontend/spec/javascripts/views/CRUD/data/database/DatabaseModal_spec.jsx
@@@ -52,225 -52,38 +52,232 @@@ const DATABASE_ENDPOINT = 'glob:*/api/v
  fetchMock.get(DATABASE_ENDPOINT, {});
  
  describe('DatabaseModal', () => {
 -  const wrapper = mount(<DatabaseModal store={store} {...mockedProps} />);
 -
 -  it('renders', () => {
 -    expect(wrapper.find(DatabaseModal)).toExist();
 +  describe('enzyme', () => {
 +    let wrapper;
 +    let spyOnUseSelector;
 +    beforeAll(() => {
 +      spyOnUseSelector = jest.spyOn(redux, 'useSelector');
 +      spyOnUseSelector.mockReturnValue(initialState.common.conf);
 +    });
 +    beforeEach(() => {
 +      wrapper = mount(
 +        <Provider store={store}>
 +          <DatabaseModal store={store} {...mockedProps} />
 +        </Provider>,
 +      );
 +    });
 +    afterEach(() => {
 +      wrapper.unmount();
 +    });
 +    it('renders', () => {
 +      expect(wrapper.find(DatabaseModal)).toExist();
 +    });
 +    it('renders a Modal', () => {
 +      expect(wrapper.find(Modal)).toExist();
 +    });
 +    it('renders "Add database" header when no database is included', () => {
 +      expect(wrapper.find('h4').text()).toEqual('Add database');
 +    });
 +    it('renders "Edit database" header when database prop is included', () => 
{
 +      const editWrapper = mount(<DatabaseModal store={store} {...dbProps} />);
 +      waitForComponentToPaint(editWrapper);
 +      expect(editWrapper.find('h4').text()).toEqual('Edit database');
 +      editWrapper.unmount();
 +    });
 +    it('renders a Tabs menu', () => {
 +      expect(wrapper.find(Tabs)).toExist();
 +    });
 +    it('renders five TabPanes', () => {
 +      expect(wrapper.find(Tabs.TabPane)).toExist();
 +      expect(wrapper.find(Tabs.TabPane)).toHaveLength(5);
 +    });
 +    it('renders input elements for Connection section', () => {
 +      expect(wrapper.find('input[name="database_name"]')).toExist();
 +      expect(wrapper.find('input[name="sqlalchemy_uri"]')).toExist();
 +    });
    });
  
 -  it('renders a Modal', () => {
 -    expect(wrapper.find(Modal)).toExist();
 -  });
 +  describe('RTL', () => {
 +    describe('initial load', () => {
 +      it('displays the correct properties from the db when selected', () => {
 +        render(
 +          <ThemeProvider theme={supersetTheme}>
 +            <Provider store={store}>
 +              <DatabaseModal
 +                show
 +                database={{ expose_in_sqllab: true, allow_ctas: true }}
 +              />
 +            </Provider>
 +          </ThemeProvider>,
 +        );
 +        // Select SQL Lab settings tab
 +        const sqlLabSettingsTab = screen.getByRole('tab', {
 +          name: /sql lab settings/i,
 +        });
 +        userEvent.click(sqlLabSettingsTab);
  
 -  it('renders "Add database" header when no database is included', () => {
 -    expect(wrapper.find('h4').text()).toEqual('Add database');
 -  });
 +        const exposeInSqlLab = screen.getByText('Expose in SQL Lab');
 +        const exposeChoicesForm = exposeInSqlLab.parentElement.nextSibling;
 +        const schemaField = screen.getByText('CTAS & CVAS SCHEMA')
 +          .parentElement;
 +        expect(exposeChoicesForm).toHaveClass('open');
 +        expect(schemaField).toHaveClass('open');
 +      });
 +      it('hides the forms from the db when not selected', () => {
 +        render(
 +          <ThemeProvider theme={supersetTheme}>
 +            <Provider store={store}>
 +              <DatabaseModal
 +                show
 +                database={{
 +                  expose_in_sqllab: false,
 +                  allow_ctas: false,
 +                  allow_cvas: false,
 +                }}
 +              />
 +            </Provider>
 +          </ThemeProvider>,
 +        );
 +        // Select SQL Lab settings tab
 +        const sqlLabSettingsTab = screen.getByRole('tab', {
 +          name: /sql lab settings/i,
 +        });
 +        userEvent.click(sqlLabSettingsTab);
  
 -  it('renders "Edit database" header when database prop is included', () => {
 -    const editWrapper = mount(<DatabaseModal store={store} {...dbProps} />);
 -    waitForComponentToPaint(editWrapper);
 -    expect(editWrapper.find('h4').text()).toEqual('Edit database');
 -  });
 +        const exposeInSqlLab = screen.getByText('Expose in SQL Lab');
 +        const exposeChoicesForm = exposeInSqlLab.parentElement.nextSibling;
 +        const schemaField = screen.getByText('CTAS & CVAS SCHEMA')
 +          .parentElement;
 +        expect(exposeChoicesForm).not.toHaveClass('open');
 +        expect(schemaField).not.toHaveClass('open');
 +      });
 +    });
 +    it('renders solely "Expose in SQL Lab" option when unchecked', () => {
 +      render(
 +        <ThemeProvider theme={supersetTheme}>
 +          <Provider store={store}>
 +            <DatabaseModal {...dbProps} />
 +          </Provider>
 +        </ThemeProvider>,
 +      );
  
 -  it('renders a Tabs menu', () => {
 -    expect(wrapper.find(Tabs)).toExist();
 -  });
 +      // Select SQL Lab settings tab
 +      const sqlLabSettingsTab = screen.getByRole('tab', {
 +        name: /sql lab settings/i,
 +      });
+ 
 -  it('renders five TabPanes', () => {
 -    expect(wrapper.find(Tabs.TabPane)).toExist();
 -    expect(wrapper.find(Tabs.TabPane)).toHaveLength(5);
 -  });
 +      userEvent.click(sqlLabSettingsTab);
 +      // Grab all SQL Lab Settings by their labels
-       const exposeInSqlLab = screen.getByText('Expose in SQL Lab');
-       const exposeChoicesForm = exposeInSqlLab.parentElement.nextSibling;
++      // const exposeInSqlLab = screen.getByText('Expose in SQL Lab');
++      const exposeInSqlLab = screen.getByRole('checkbox', {
++        name: /expose in sql lab/i,
++      });
 +
 +      // While 'Expose in SQL Lab' is checked, all settings should display
-       expect(exposeChoicesForm).toHaveClass('open');
++      expect(exposeInSqlLab).not.toBeChecked();
 +
 +      // When clicked, "Expose in SQL Lab" becomes unchecked
 +      userEvent.click(exposeInSqlLab);
++
 +      // While unchecked, only "Expose in SQL Lab" should display
-       expect(exposeInSqlLab).toBeVisible();
-       expect(exposeChoicesForm).not.toHaveClass('open');
++      expect(exposeInSqlLab).toBeChecked();
++      const checkboxes = screen.getAllByRole('checkbox');
++
++      // While checked make sure all checkboxes are showing
++      expect(checkboxes.length).toEqual(5);
 +    });
 +
 +    it('renders the schema field when allowCTAS is checked', () => {
 +      render(
 +        <ThemeProvider theme={supersetTheme}>
 +          <Provider store={store}>
 +            <DatabaseModal {...dbProps} />
 +          </Provider>
 +        </ThemeProvider>,
 +      );
 +
 +      // Select SQL Lab settings tab
 +      const sqlLabSettingsTab = screen.getByRole('tab', {
 +        name: /sql lab settings/i,
 +      });
 +      userEvent.click(sqlLabSettingsTab);
 +      // Grab CTAS & schema field by their labels
 +      const allowCTAS = screen.getByLabelText('Allow CREATE TABLE AS');
 +      const schemaField = screen.getByText('CTAS & CVAS 
SCHEMA').parentElement;
 +
 +      // While CTAS & CVAS are unchecked, schema field is not visible
 +      expect(schemaField).not.toHaveClass('open');
 +
 +      // Check "Allow CTAS" to reveal schema field
 +      userEvent.click(allowCTAS);
 +      expect(schemaField).toHaveClass('open');
 +
 +      // Uncheck "Allow CTAS" to hide schema field again
 +      userEvent.click(allowCTAS);
 +      expect(schemaField).not.toHaveClass('open');
 +    });
 +
 +    it('renders the schema field when allowCVAS is checked', () => {
 +      render(
 +        <ThemeProvider theme={supersetTheme}>
 +          <Provider store={store}>
 +            <DatabaseModal {...dbProps} />
 +          </Provider>
 +        </ThemeProvider>,
 +      );
 +
 +      // Select SQL Lab settings tab
 +      const sqlLabSettingsTab = screen.getByRole('tab', {
 +        name: /sql lab settings/i,
 +      });
 +      userEvent.click(sqlLabSettingsTab);
 +      // Grab CVAS by it's label & schema field
 +      const allowCVAS = screen.getByText('Allow CREATE VIEW AS');
 +      const schemaField = screen.getByText('CTAS & CVAS 
SCHEMA').parentElement;
 +
 +      // While CTAS & CVAS are unchecked, schema field is not visible
 +      expect(schemaField).not.toHaveClass('open');
 +
 +      // Check "Allow CVAS" to reveal schema field
 +      userEvent.click(allowCVAS);
 +      expect(schemaField).toHaveClass('open');
 +
 +      // Uncheck "Allow CVAS" to hide schema field again
 +      userEvent.click(allowCVAS);
 +      expect(schemaField).not.toHaveClass('open');
 +    });
 +
 +    it('renders the schema field when both allowCTAS and allowCVAS are 
checked', () => {
 +      render(
 +        <ThemeProvider theme={supersetTheme}>
 +          <Provider store={store}>
 +            <DatabaseModal {...dbProps} />
 +          </Provider>
 +        </ThemeProvider>,
 +      );
 +
 +      // Select SQL Lab settings tab
 +      const sqlLabSettingsTab = screen.getByRole('tab', {
 +        name: /sql lab settings/i,
 +      });
 +      userEvent.click(sqlLabSettingsTab);
 +      // Grab CTAS and CVAS by their labels, & schema field
 +      const allowCTAS = screen.getByText('Allow CREATE TABLE AS');
 +      const allowCVAS = screen.getByText('Allow CREATE VIEW AS');
 +      const schemaField = screen.getByText('CTAS & CVAS 
SCHEMA').parentElement;
 +
 +      // While CTAS & CVAS are unchecked, schema field is not visible
 +      expect(schemaField).not.toHaveClass('open');
  
 -  it('renders input elements for Connection section', () => {
 -    expect(wrapper.find('input[name="database_name"]')).toExist();
 -    expect(wrapper.find('input[name="sqlalchemy_uri"]')).toExist();
 +      // Check both "Allow CTAS" and "Allow CVAS" to reveal schema field
 +      userEvent.click(allowCTAS);
 +      userEvent.click(allowCVAS);
 +      expect(schemaField).toHaveClass('open');
 +      // Uncheck both "Allow CTAS" and "Allow CVAS" to hide schema field again
 +      userEvent.click(allowCTAS);
 +      // Both checkboxes go unchecked, so the field should no longer render
 +      userEvent.click(allowCVAS);
 +      expect(schemaField).not.toHaveClass('open');
 +    });
    });
  });
diff --cc superset-frontend/src/views/CRUD/data/database/DatabaseModal.tsx
index 9731279,cded9c8..c59e1b3
--- a/superset-frontend/src/views/CRUD/data/database/DatabaseModal.tsx
+++ b/superset-frontend/src/views/CRUD/data/database/DatabaseModal.tsx
@@@ -260,10 -227,10 +263,10 @@@ const DatabaseModal: FunctionComponent<
        ...db,
      };
  
 -    if (target.type === 'checkbox') {
 -      data[target.name] = target.checked;
 +    if (type === 'checkbox') {
 +      data[name] = checked;
      } else {
-       data[name] = typeof value === 'string' ? value.trim() : value;
 -      data[target.name] = target.value;
++      data[name] = value;
      }
  
      setDB(data);

Reply via email to