The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/public/app/features/explore/state/datasource.test.ts

50 lines
1.5 KiB

import { DataSourceApi } from '@grafana/data';
import { DataQuery } from '@grafana/schema';
import { ExploreItemState } from 'app/types';
import { updateDatasourceInstanceAction, datasourceReducer } from './datasource';
import { createEmptyQueryResponse } from './utils';
describe('Datasource reducer', () => {
it('should handle set updateDatasourceInstanceAction correctly', () => {
const StartPage = {};
const datasourceInstance = {
meta: {
metrics: true,
logs: true,
},
components: {
QueryEditorHelp: StartPage,
},
} as DataSourceApi;
const queries: DataQuery[] = [];
const queryKeys: string[] = [];
const initialState: ExploreItemState = {
datasourceInstance: null,
queries,
queryKeys,
} as unknown as ExploreItemState;
const result = datasourceReducer(
initialState,
updateDatasourceInstanceAction({ exploreId: 'left', datasourceInstance, history: [] })
);
const expectedState: Partial<ExploreItemState> = {
datasourceInstance,
queries,
queryKeys,
graphResult: null,
logsResult: null,
tableResult: null,
queryResponse: {
// When creating an empty query response we also create a timeRange object with the current time.
// Copying the range from the reducer here prevents intermittent failures when creating them at different times.
...createEmptyQueryResponse(),
timeRange: result.queryResponse.timeRange,
},
};
expect(result).toMatchObject(expectedState);
});
});