62 lines
1.8 KiB
TypeScript
62 lines
1.8 KiB
TypeScript
import { LocalValueVariable, SceneGridLayout, SceneGridRow, SceneVariableSet, VizPanel } from '@grafana/scenes';
|
|
|
|
import { DashboardScene } from './DashboardScene';
|
|
import { ViewPanelScene } from './ViewPanelScene';
|
|
import { DashboardGridItem } from './layout-default/DashboardGridItem';
|
|
import { DefaultGridLayoutManager } from './layout-default/DefaultGridLayoutManager';
|
|
|
|
jest.mock('@grafana/runtime', () => ({
|
|
...jest.requireActual('@grafana/runtime'),
|
|
getPluginImportUtils: () => ({
|
|
getPanelPluginFromCache: jest.fn(() => {}),
|
|
}),
|
|
}));
|
|
|
|
describe('ViewPanelScene', () => {
|
|
it('Should activate panel parents', () => {
|
|
const { viewPanelScene, dashboard } = buildScene();
|
|
viewPanelScene.activate();
|
|
expect(viewPanelScene.state.panelRef.resolve().isActive).toBe(true);
|
|
expect(dashboard.state.body.isActive).toBe(true);
|
|
});
|
|
});
|
|
|
|
interface SceneOptions {
|
|
rowVariables?: boolean;
|
|
panelVariables?: boolean;
|
|
}
|
|
|
|
function buildScene(options?: SceneOptions) {
|
|
// builds a scene how it looks like after row and panel repeats are processed
|
|
const panel = new VizPanel({
|
|
key: 'panel-22',
|
|
});
|
|
|
|
const dashboard = new DashboardScene({
|
|
body: new DefaultGridLayoutManager({
|
|
grid: new SceneGridLayout({
|
|
children: [
|
|
new SceneGridRow({
|
|
x: 0,
|
|
y: 10,
|
|
width: 24,
|
|
$variables: new SceneVariableSet({
|
|
variables: [new LocalValueVariable({ value: 'row-var-value' })],
|
|
}),
|
|
height: 1,
|
|
children: [
|
|
new DashboardGridItem({
|
|
body: panel,
|
|
}),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
}),
|
|
});
|
|
|
|
const viewPanelScene = new ViewPanelScene({ panelRef: panel.getRef() });
|
|
|
|
return { viewPanelScene, dashboard };
|
|
}
|