mirror of https://github.com/grafana/grafana
Explore: Load default data source in Explore when the provided source does not exist (#32992)
* Fallback to default data source in Explore and use uid for history uid is used to allow changing the name of the datasource and preserve history * Remove redundant console logspull/33029/head^2
parent
db29a8a8de
commit
da03175d0b
@ -0,0 +1,49 @@ |
|||||||
|
import { lastUsedDatasourceKeyForOrgId } from '../../../core/utils/explore'; |
||||||
|
|
||||||
|
const dataSourceMock = { |
||||||
|
get: jest.fn(), |
||||||
|
}; |
||||||
|
jest.mock('app/features/plugins/datasource_srv', () => ({ |
||||||
|
getDatasourceSrv: jest.fn(() => dataSourceMock), |
||||||
|
})); |
||||||
|
|
||||||
|
const storeMock = { |
||||||
|
getObject: jest.fn().mockReturnValue([]), |
||||||
|
set: jest.fn(), |
||||||
|
}; |
||||||
|
jest.mock('app/core/store', () => storeMock); |
||||||
|
|
||||||
|
import { loadAndInitDatasource } from './utils'; |
||||||
|
|
||||||
|
const DEFAULT_DATASOURCE = { uid: 'abc123', name: 'Default' }; |
||||||
|
const TEST_DATASOURCE = { uid: 'def789', name: 'Test' }; |
||||||
|
|
||||||
|
describe('loadAndInitDatasource', () => { |
||||||
|
beforeEach(() => { |
||||||
|
jest.clearAllMocks(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('falls back to default datasource if the provided one was not found', async () => { |
||||||
|
dataSourceMock.get.mockRejectedValueOnce(new Error('Datasource not found')); |
||||||
|
dataSourceMock.get.mockResolvedValue(DEFAULT_DATASOURCE); |
||||||
|
|
||||||
|
const { instance } = await loadAndInitDatasource(1, 'Unknown'); |
||||||
|
|
||||||
|
expect(dataSourceMock.get).toBeCalledTimes(2); |
||||||
|
expect(dataSourceMock.get).toBeCalledWith('Unknown'); |
||||||
|
expect(dataSourceMock.get).toBeCalledWith(); |
||||||
|
expect(instance).toMatchObject(DEFAULT_DATASOURCE); |
||||||
|
expect(storeMock.set).toBeCalledWith(lastUsedDatasourceKeyForOrgId(1), DEFAULT_DATASOURCE.uid); |
||||||
|
}); |
||||||
|
|
||||||
|
it('saves last loaded data source uid', async () => { |
||||||
|
dataSourceMock.get.mockResolvedValue(TEST_DATASOURCE); |
||||||
|
|
||||||
|
const { instance } = await loadAndInitDatasource(1, 'Test'); |
||||||
|
|
||||||
|
expect(dataSourceMock.get).toBeCalledTimes(1); |
||||||
|
expect(dataSourceMock.get).toBeCalledWith('Test'); |
||||||
|
expect(instance).toMatchObject(TEST_DATASOURCE); |
||||||
|
expect(storeMock.set).toBeCalledWith(lastUsedDatasourceKeyForOrgId(1), TEST_DATASOURCE.uid); |
||||||
|
}); |
||||||
|
}); |
||||||
Loading…
Reference in new issue