2025-04-01 10:38:02 +09:00

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