54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import { SceneCSSGridLayout, SceneQueryRunner, VizPanel } from '@grafana/scenes';
|
|
|
|
import { findVizPanelByKey } from '../../utils/utils';
|
|
import { DashboardScene } from '../DashboardScene';
|
|
|
|
import { ResponsiveGridItem } from './ResponsiveGridItem';
|
|
import { ResponsiveGridLayoutManager } from './ResponsiveGridLayoutManager';
|
|
|
|
describe('ResponsiveGridLayoutManager', () => {
|
|
it('Should clone the layout', () => {
|
|
const { manager } = setup();
|
|
const clone = manager.cloneLayout('foo', true) as ResponsiveGridLayoutManager;
|
|
|
|
expect(clone).not.toBe(manager);
|
|
expect(clone.state.layout).not.toBe(manager.state.layout);
|
|
expect(clone.state.layout.state.children).not.toBe(manager.state.layout.state.children);
|
|
expect(clone.state.layout.state.children.length).toBe(manager.state.layout.state.children.length);
|
|
|
|
const panelA = findVizPanelByKey(clone, 'foo/grid-item-1/panel-1');
|
|
expect(panelA?.state.title).toBe('Panel A');
|
|
|
|
const panelB = findVizPanelByKey(clone, 'foo/grid-item-2/panel-2');
|
|
expect(panelB?.state.title).toBe('Panel B');
|
|
});
|
|
});
|
|
|
|
function setup() {
|
|
const gridItems = [
|
|
new ResponsiveGridItem({
|
|
key: 'grid-item-1',
|
|
body: new VizPanel({
|
|
title: 'Panel A',
|
|
key: 'panel-1',
|
|
pluginId: 'table',
|
|
$data: new SceneQueryRunner({ key: 'data-query-runner', queries: [{ refId: 'A' }] }),
|
|
}),
|
|
}),
|
|
new ResponsiveGridItem({
|
|
key: 'grid-item-2',
|
|
body: new VizPanel({
|
|
title: 'Panel B',
|
|
key: 'panel-2',
|
|
pluginId: 'table',
|
|
}),
|
|
}),
|
|
];
|
|
|
|
const manager = new ResponsiveGridLayoutManager({ layout: new SceneCSSGridLayout({ children: gridItems }) });
|
|
|
|
new DashboardScene({ body: manager });
|
|
|
|
return { manager };
|
|
}
|