mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Explore: Add unit tests for addQueryRow() and generateEmptyQuery() (#60977)
* feat: add condition * refactor: clea up * refactor: remove changes and add my solution as comment * feat: add test * refactor: test preparation * refactor: finish test prep and remove planned changed from addQueryRow() * refactor: finish first test * refactor: add required props after removing any (not complete) * refactor: replace props and clean up * refactor: add another test * refactor: extend tests with datasourceInstance * refactor: add test for mixed ds enabled * refactor: remove typescript errors * feat: add first attempt of a test for generateEmptyQuery() * feat: setup first test for generateEmptyQuery() * refactor: remove typescript errors * feat: add another test for generateEmptyQuery() * refactor: add some assertions * refactor: restructure tests * refactor: remove doubled code * refactor: remove typescript errors * refactor: remove mocking mistake and add test * refactor: remove mocking mistakes * refactor: repair mock for feature toggle * refactor: clean up * refactor: changes from code review
This commit is contained in:
@@ -3,6 +3,7 @@ import { serializeStateToUrlParam } from '@grafana/data/src/utils/url';
|
||||
import { RefreshPicker } from '@grafana/ui';
|
||||
import store from 'app/core/store';
|
||||
|
||||
import { DatasourceSrvMock, MockDataSourceApi } from '../../../test/mocks/datasource_srv';
|
||||
import { ExploreId } from '../../types';
|
||||
|
||||
import {
|
||||
@@ -19,6 +20,7 @@ import {
|
||||
GetExploreUrlArguments,
|
||||
getTimeRangeFromUrl,
|
||||
getTimeRange,
|
||||
generateEmptyQuery,
|
||||
} from './explore';
|
||||
|
||||
const DEFAULT_EXPLORE_STATE: ExploreUrlState = {
|
||||
@@ -27,6 +29,22 @@ const DEFAULT_EXPLORE_STATE: ExploreUrlState = {
|
||||
range: DEFAULT_RANGE,
|
||||
};
|
||||
|
||||
const defaultDs = new MockDataSourceApi('default datasource', { data: ['default data'] });
|
||||
|
||||
const datasourceSrv = new DatasourceSrvMock(defaultDs, {
|
||||
'generate empty query': new MockDataSourceApi('generateEmptyQuery'),
|
||||
ds1: {
|
||||
name: 'testDs',
|
||||
type: 'loki',
|
||||
} as MockDataSourceApi,
|
||||
});
|
||||
|
||||
const getDataSourceSrvMock = jest.fn().mockReturnValue(datasourceSrv);
|
||||
jest.mock('@grafana/runtime', () => ({
|
||||
...(jest.requireActual('@grafana/runtime') as unknown as object),
|
||||
getDataSourceSrv: () => getDataSourceSrvMock(),
|
||||
}));
|
||||
|
||||
describe('state functions', () => {
|
||||
describe('parseUrlState', () => {
|
||||
it('returns default state on empty string', () => {
|
||||
@@ -440,3 +458,28 @@ describe('when buildQueryTransaction', () => {
|
||||
expect(transaction.request.interval).toEqual('2h');
|
||||
});
|
||||
});
|
||||
|
||||
describe('generateEmptyQuery', () => {
|
||||
it('should generate query with dataSourceOverride and without queries', async () => {
|
||||
const query = await generateEmptyQuery([], 1, { type: 'loki', uid: 'ds1' });
|
||||
|
||||
expect(query.datasource?.uid).toBe('ds1');
|
||||
expect(query.datasource?.type).toBe('loki');
|
||||
expect(query.refId).toBe('A');
|
||||
});
|
||||
it('should generate query without dataSourceOverride and with queries', async () => {
|
||||
const query = await generateEmptyQuery(
|
||||
[
|
||||
{
|
||||
datasource: { type: 'loki', uid: 'ds1' },
|
||||
refId: 'A',
|
||||
},
|
||||
],
|
||||
1
|
||||
);
|
||||
|
||||
expect(query.datasource?.uid).toBe('ds1');
|
||||
expect(query.datasource?.type).toBe('loki');
|
||||
expect(query.refId).toBe('B');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user