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

69 lines
2.0 KiB
TypeScript

import { config } from '@grafana/runtime';
import { DashboardScene } from 'app/features/dashboard-scene/scene/DashboardScene';
import { scopesDashboardsScene, scopesSelectorScene } from '../instance';
import { enterEditMode, openSelector, toggleDashboards } from './utils/actions';
import {
expectDashboardsClosed,
expectDashboardsNotInDocument,
expectScopesSelectorClosed,
expectScopesSelectorNotInDocument,
} from './utils/assertions';
import { getDatasource, getInstanceSettings, getMock } from './utils/mocks';
import { renderDashboard, resetScenes } from './utils/render';
jest.mock('@grafana/runtime', () => ({
__esModule: true,
...jest.requireActual('@grafana/runtime'),
useChromeHeaderHeight: jest.fn(),
getBackendSrv: () => ({ get: getMock }),
getDataSourceSrv: () => ({ get: getDatasource, getInstanceSettings }),
usePluginLinks: jest.fn().mockReturnValue({ links: [] }),
}));
describe('View mode', () => {
let dashboardScene: DashboardScene;
beforeAll(() => {
config.featureToggles.scopeFilters = true;
config.featureToggles.groupByVariable = true;
});
beforeEach(() => {
dashboardScene = renderDashboard();
});
afterEach(async () => {
await resetScenes();
});
it('Enters view mode', async () => {
await enterEditMode(dashboardScene);
expect(scopesSelectorScene?.state?.isReadOnly).toEqual(true);
expect(scopesDashboardsScene?.state?.isPanelOpened).toEqual(false);
});
it('Closes selector on enter', async () => {
await openSelector();
await enterEditMode(dashboardScene);
expectScopesSelectorClosed();
});
it('Closes dashboards list on enter', async () => {
await toggleDashboards();
await enterEditMode(dashboardScene);
expectDashboardsClosed();
});
it('Does not show selector when view mode is active', async () => {
await enterEditMode(dashboardScene);
expectScopesSelectorNotInDocument();
});
it('Does not show the expand button when view mode is active', async () => {
await enterEditMode(dashboardScene);
expectDashboardsNotInDocument();
});
});