diff --git a/superset-frontend/src/SqlLab/actions/sqlLab.test.ts b/superset-frontend/src/SqlLab/actions/sqlLab.test.ts index 157aaa3d4c9..960e0943840 100644 --- a/superset-frontend/src/SqlLab/actions/sqlLab.test.ts +++ b/superset-frontend/src/SqlLab/actions/sqlLab.test.ts @@ -749,7 +749,7 @@ describe('async actions', () => { database_name: 'examples', id: 2, }, - description: '', + description: 'A saved query description', id: 1, label: 'Query 1', schema: 'public', @@ -799,6 +799,7 @@ describe('async actions', () => { const expectedParams = { name: 'Query 1', + description: 'A saved query description', dbId: 2, catalog: null, schema: 'public', diff --git a/superset-frontend/src/SqlLab/actions/sqlLab.ts b/superset-frontend/src/SqlLab/actions/sqlLab.ts index cb80e5f932d..a64329b06e7 100644 --- a/superset-frontend/src/SqlLab/actions/sqlLab.ts +++ b/superset-frontend/src/SqlLab/actions/sqlLab.ts @@ -1539,6 +1539,7 @@ export function popSavedQuery( } as Record; const tmpAdaptedProps = { name: queryEditorProps.name as string, + description: queryEditorProps.description as string, dbId: (queryEditorProps.database as { id: number }).id, catalog: queryEditorProps.catalog as string, schema: queryEditorProps.schema as string, diff --git a/superset-frontend/src/SqlLab/components/SaveQuery/SaveQuery.test.tsx b/superset-frontend/src/SqlLab/components/SaveQuery/SaveQuery.test.tsx index 0a60c9c7ee3..22fe9452b8b 100644 --- a/superset-frontend/src/SqlLab/components/SaveQuery/SaveQuery.test.tsx +++ b/superset-frontend/src/SqlLab/components/SaveQuery/SaveQuery.test.tsx @@ -172,6 +172,47 @@ describe('SavedQuery', () => { expect(updateBtn).toBeInTheDocument(); }); + test('pre-fills the description from an existing saved query and updates with it unchanged', async () => { + const storedDescription = 'This is the stored description'; + const mockOnUpdate = jest.fn(); + + render(, { + useRedux: true, + store: mockStore({ + ...mockState, + sqlLab: { + ...mockState.sqlLab, + queryEditors: [ + { + id: mockedProps.queryEditorId, + dbId: 1, + catalog: null, + schema: 'main', + sql: 'SELECT * FROM t', + name: 'My saved query', + description: storedDescription, + remoteId: 42, + }, + ], + }, + }), + }); + + userEvent.click(screen.getByRole('button', { name: /save/i })); + + const descriptionTextbox = screen.getByRole('textbox', { + name: 'Description', + }); + expect(descriptionTextbox).toHaveValue(storedDescription); + + userEvent.click(screen.getByRole('button', { name: /update/i })); + + await waitFor(() => expect(mockOnUpdate).toHaveBeenCalled()); + expect(mockOnUpdate.mock.calls[0][0]).toEqual( + expect.objectContaining({ description: storedDescription }), + ); + }); + test('renders a split save button when allows_virtual_table_explore is enabled', async () => { render(, { useRedux: true, diff --git a/superset-frontend/src/SqlLab/components/SaveQuery/index.tsx b/superset-frontend/src/SqlLab/components/SaveQuery/index.tsx index b0647155a16..15957b93d43 100644 --- a/superset-frontend/src/SqlLab/components/SaveQuery/index.tsx +++ b/superset-frontend/src/SqlLab/components/SaveQuery/index.tsx @@ -162,16 +162,22 @@ const SaveQuery = ({
- - + +
- +