mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 16:45:43 -06:00
* VizPanel: Make it more real * Updates * Progress on query runner and max data points from width * Updated * Update * Tests * Fixed issue with migration * Moving VizPanel * Fixed migration issue due to pluginVersion not being set * Update public/app/features/scenes/querying/SceneQueryRunner.test.ts Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com> * Some minor review fixes * Added expect Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
84 lines
2.1 KiB
TypeScript
84 lines
2.1 KiB
TypeScript
import { of } from 'rxjs';
|
|
|
|
import { DataQueryRequest, DataSourceApi, getDefaultTimeRange, LoadingState, PanelData } from '@grafana/data';
|
|
|
|
import { SceneTimeRange } from '../core/SceneTimeRange';
|
|
|
|
import { SceneQueryRunner } from './SceneQueryRunner';
|
|
|
|
const getDatasource = () => {
|
|
return {
|
|
getRef: () => ({ uid: 'test' }),
|
|
};
|
|
};
|
|
|
|
jest.mock('app/features/plugins/datasource_srv', () => ({
|
|
getDatasourceSrv: jest.fn(() => ({
|
|
get: getDatasource,
|
|
})),
|
|
}));
|
|
|
|
const runRequest = jest.fn().mockReturnValue(
|
|
of<PanelData>({
|
|
state: LoadingState.Done,
|
|
series: [],
|
|
timeRange: getDefaultTimeRange(),
|
|
})
|
|
);
|
|
|
|
let sentRequest: DataQueryRequest | undefined;
|
|
|
|
jest.mock('app/features/query/state/runRequest', () => ({
|
|
runRequest: (ds: DataSourceApi, request: DataQueryRequest) => {
|
|
sentRequest = request;
|
|
return runRequest(ds, request);
|
|
},
|
|
}));
|
|
|
|
describe('SceneQueryRunner', () => {
|
|
describe('when activated and got no data', () => {
|
|
it('should run queries', async () => {
|
|
const queryRunner = new SceneQueryRunner({
|
|
queries: [{ refId: 'A' }],
|
|
$timeRange: new SceneTimeRange(),
|
|
});
|
|
|
|
expect(queryRunner.state.data).toBeUndefined();
|
|
|
|
queryRunner.activate();
|
|
|
|
await new Promise((r) => setTimeout(r, 1));
|
|
|
|
expect(queryRunner.state.data?.state).toBe(LoadingState.Done);
|
|
// Default max data points
|
|
expect(sentRequest?.maxDataPoints).toBe(500);
|
|
});
|
|
});
|
|
|
|
describe('when activated and maxDataPointsFromWidth set to true', () => {
|
|
it('should run queries', async () => {
|
|
const queryRunner = new SceneQueryRunner({
|
|
queries: [{ refId: 'A' }],
|
|
$timeRange: new SceneTimeRange(),
|
|
maxDataPointsFromWidth: true,
|
|
});
|
|
|
|
expect(queryRunner.state.data).toBeUndefined();
|
|
|
|
queryRunner.activate();
|
|
|
|
await new Promise((r) => setTimeout(r, 1));
|
|
|
|
expect(queryRunner.state.data?.state).toBeUndefined();
|
|
|
|
queryRunner.setContainerWidth(1000);
|
|
|
|
expect(queryRunner.state.data?.state).toBeUndefined();
|
|
|
|
await new Promise((r) => setTimeout(r, 1));
|
|
|
|
expect(queryRunner.state.data?.state).toBe(LoadingState.Done);
|
|
});
|
|
});
|
|
});
|