grafana/public/app/features/scenes/querying/SceneQueryRunner.test.ts
Torkel Ödegaard 156ed4b56c
VizPanel: Support panel migrations and state changes (#58501)
* 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>
2022-11-21 15:31:01 +01:00

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);
});
});
});