diff --git a/public/app/features/dashboard-scene/settings/variables/components/QueryVariableForm.tsx b/public/app/features/dashboard-scene/settings/variables/components/QueryVariableForm.tsx index d6d4d467c9a..3849fb0a2c5 100644 --- a/public/app/features/dashboard-scene/settings/variables/components/QueryVariableForm.tsx +++ b/public/app/features/dashboard-scene/settings/variables/components/QueryVariableForm.tsx @@ -89,6 +89,14 @@ export function QueryVariableEditorForm({ onQueryChange(query); } + if (!datasourceRef) { + const instanceSettings = getDataSourceSrv().getInstanceSettings({ type: datasource.type, uid: datasource.uid }); + + if (instanceSettings) { + onDataSourceChange(instanceSettings); + } + } + return { datasource, VariableQueryEditor }; }, [datasourceRef]); diff --git a/public/app/features/dashboard-scene/settings/variables/editors/QueryVariableEditor.test.tsx b/public/app/features/dashboard-scene/settings/variables/editors/QueryVariableEditor.test.tsx index ff1b0e88a66..5b6579dcfa0 100644 --- a/public/app/features/dashboard-scene/settings/variables/editors/QueryVariableEditor.test.tsx +++ b/public/app/features/dashboard-scene/settings/variables/editors/QueryVariableEditor.test.tsx @@ -148,6 +148,20 @@ describe('QueryVariableEditor', () => { expect(staticOptionsToggle).toBeInTheDocument(); }); + it('should update the variable with default datasource when opening editor', async () => { + const onRunQueryMock = jest.fn(); + const variable = new QueryVariable({ datasource: undefined, query: '' }); + + await setup({ + variable, + onRunQuery: onRunQueryMock, + }); + + await waitFor(async () => { + expect(variable.state.datasource).not.toBe(undefined); + }); + }); + it('should update the variable with default query for the selected DS', async () => { const onRunQueryMock = jest.fn(); const variable = new QueryVariable({ datasource: { uid: 'mock-ds-2', type: 'test' }, query: '' }); diff --git a/public/app/features/variables/query/QueryVariableEditor.test.tsx b/public/app/features/variables/query/QueryVariableEditor.test.tsx index 0322a73b048..44b2d98a0f9 100644 --- a/public/app/features/variables/query/QueryVariableEditor.test.tsx +++ b/public/app/features/variables/query/QueryVariableEditor.test.tsx @@ -29,7 +29,12 @@ ds.variables = { }; const setupTestContext = async (options: Partial) => { - const variableDefaults: Partial = { rootStateKey: 'key' }; + const variableDefaults: Partial = { + rootStateKey: 'key', + // adds a default datasource in old arch tests so they continue passing + // in new scenes arch the datasource will be calculated if not provided + datasource: { uid: 'uid', type: 'type' }, + }; const extended = { VariableQueryEditor: LegacyVariableQueryEditor, dataSource: ds,