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