Compare commits

...

2 Commits

Author SHA1 Message Date
Joe Li
a2241b1341 test(sqllab): cover preview query migration 2026-06-25 11:17:22 -07:00
Joe Li
a51f627493 fix(sqllab): preserve query history after tab migration 2026-06-24 17:29:46 -07:00
2 changed files with 20 additions and 13 deletions

View File

@@ -1843,14 +1843,26 @@ describe('async actions', () => {
{
...query,
id: 'previewOne',
sqlEditorId: oldQueryEditor.id,
inLocalStorage: true,
sqlEditorId: null,
isDataPreview: true,
},
{
...query,
id: 'previewTwo',
sqlEditorId: null,
isDataPreview: true,
},
{
...query,
id: 'runningQuery',
sqlEditorId: oldQueryEditor.id,
inLocalStorage: true,
state: 'running',
},
{
...query,
id: 'unrelatedQuery',
sqlEditorId: 'other-editor',
state: 'running',
},
];
const store = mockStore({
@@ -1885,12 +1897,7 @@ describe('async actions', () => {
},
{
type: actions.MIGRATE_QUERY,
queryId: 'previewOne',
queryEditorId: '1',
},
{
type: actions.MIGRATE_QUERY,
queryId: 'previewTwo',
queryId: 'runningQuery',
queryEditorId: '1',
},
];
@@ -1900,7 +1907,7 @@ describe('async actions', () => {
expect(store.getActions()).toEqual(expectedActions);
expect(
fetchMock.callHistory.calls(updateTabStateEndpoint),
).toHaveLength(3);
).toHaveLength(2);
// query editor has 2 tables loaded in the schema viewer
expect(

View File

@@ -689,8 +689,8 @@ export function syncQueryEditor(
(table: Table) =>
table.inLocalStorage && table.queryEditorId === queryEditor.id,
);
const localStorageQueries = Object.values(queries).filter(
query => query.inLocalStorage && query.sqlEditorId === queryEditor.id,
const queriesToMigrate = Object.values(queries).filter(
query => query.sqlEditorId === queryEditor.id && !query.isDataPreview,
);
return SupersetClient.post({
endpoint: '/tabstateview/',
@@ -712,7 +712,7 @@ export function syncQueryEditor(
...localStorageTables.map((table: Table) =>
migrateTable(table, newQueryEditor.tabViewId!, dispatch),
),
...localStorageQueries.map((query: Query) =>
...queriesToMigrate.map((query: Query) =>
migrateQuery(query.id, newQueryEditor.tabViewId!, dispatch),
),
]);