grafana/public/app/features/scenes/dashboard/ShareQueryDataProvider.test.ts
Torkel Ödegaard 3af8f3246a
Scenes: Add support for shared query results of other panel (#65413)
* Scene: Add support for shared query results of other panel

* Update

* Fixing dashboard
2023-04-05 10:19:54 +02:00

55 lines
1.5 KiB
TypeScript

import { getDefaultTimeRange, LoadingState } from '@grafana/data';
import {
SceneDataNode,
SceneFlexItem,
SceneFlexLayout,
sceneGraph,
SceneObjectBase,
SceneObjectState,
} from '@grafana/scenes';
import { ShareQueryDataProvider } from './ShareQueryDataProvider';
import { activateFullSceneTree, getVizPanelKeyForPanelId } from './utils';
export class SceneDummyPanel extends SceneObjectBase<SceneObjectState> {}
describe('ShareQueryDataProvider', () => {
it('Should find and subscribe to another VizPanels data provider', () => {
const panel = new SceneDummyPanel({
key: getVizPanelKeyForPanelId(2),
$data: new ShareQueryDataProvider({
query: { refId: 'A', panelId: 1 },
}),
});
const sourceData = new SceneDataNode({
data: {
series: [],
state: LoadingState.Done,
timeRange: getDefaultTimeRange(),
structureRev: 11,
},
});
const scene = new SceneFlexLayout({
children: [
new SceneFlexItem({
body: new SceneDummyPanel({
key: getVizPanelKeyForPanelId(1),
$data: sourceData,
}),
}),
new SceneFlexItem({ body: panel }),
],
});
activateFullSceneTree(scene);
expect(sceneGraph.getData(panel).state.data?.structureRev).toBe(11);
sourceData.setState({ data: { ...sourceData.state.data!, structureRev: 12 } });
expect(sceneGraph.getData(panel).state.data?.structureRev).toBe(12);
});
});