Skip to content

Commit

Permalink
fix: pass schema on dataset creation (apache#24815)
Browse files Browse the repository at this point in the history
(cherry picked from commit ba508a7)
  • Loading branch information
betodealmeida authored and sadpandajoe committed Jul 28, 2023
1 parent 6bd1a29 commit cba4665
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,17 @@
*/
import React from 'react';
import * as reactRedux from 'react-redux';
import { render, screen, cleanup, waitFor } from 'spec/helpers/testing-library';
import {
fireEvent,
render,
screen,
cleanup,
waitFor,
} from 'spec/helpers/testing-library';
import userEvent from '@testing-library/user-event';
import fetchMock from 'fetch-mock';
import { SaveDatasetModal } from 'src/SqlLab/components/SaveDatasetModal';
import { createDatasource } from 'src/SqlLab/actions/sqlLab';
import { user, testQuery, mockdatasets } from 'src/SqlLab/fixtures';

const mockedProps = {
Expand All @@ -46,6 +53,15 @@ beforeEach(() => {
cleanup();
});

// Mock the createDatasource action
const useDispatchMock = jest.spyOn(reactRedux, 'useDispatch');
jest.mock('src/SqlLab/actions/sqlLab', () => ({
createDatasource: jest.fn(),
}));
jest.mock('src/explore/exploreUtils/formData', () => ({
postFormData: jest.fn(),
}));

describe('SaveDatasetModal', () => {
it('renders a "Save as new" field', () => {
render(<SaveDatasetModal {...mockedProps} />, { useRedux: true });
Expand Down Expand Up @@ -175,4 +191,28 @@ describe('SaveDatasetModal', () => {
expect(screen.getByRole('button', { name: /back/i })).toBeVisible();
expect(screen.getByRole('button', { name: /overwrite/i })).toBeVisible();
});

it('sends the schema when creating the dataset', async () => {
const dummyDispatch = jest.fn().mockResolvedValue({});
useDispatchMock.mockReturnValue(dummyDispatch);
useSelectorMock.mockReturnValue({ ...user });

render(<SaveDatasetModal {...mockedProps} />, { useRedux: true });

const inputFieldText = screen.getByDisplayValue(/unimportant/i);
fireEvent.change(inputFieldText, { target: { value: 'my dataset' } });

const saveConfirmationBtn = screen.getByRole('button', {
name: /save/i,
});
userEvent.click(saveConfirmationBtn);

expect(createDatasource).toHaveBeenCalledWith({
datasourceName: 'my dataset',
dbId: 1,
schema: 'main',
sql: 'SELECT *',
templateParams: undefined,
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ export const SaveDatasetModal = ({
createDatasource({
sql: datasource.sql,
dbId: datasource.dbId || datasource?.database?.id,
schema: datasource?.schema,
templateParams,
datasourceName: datasetName,
}),
Expand Down
1 change: 1 addition & 0 deletions superset-frontend/src/SqlLab/fixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,7 @@ export const queryId = 'clientId2353';
export const testQuery: ISaveableDatasource = {
name: 'unimportant',
dbId: 1,
schema: 'main',
sql: 'SELECT *',
columns: [
{
Expand Down

0 comments on commit cba4665

Please sign in to comment.