grafana/public/app/features/scopes/tests/dashboardReload.test.ts

99 lines
3.2 KiB
TypeScript
Raw Normal View History

import { config } from '@grafana/runtime';
import { setDashboardAPI } from 'app/features/dashboard/api/dashboard_api';
import { enterEditMode, updateMyVar, updateScopes, updateTimeRange } from './utils/actions';
import { expectDashboardReload, expectNotDashboardReload } 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: [] }),
}));
const runTest = async (
reloadDashboardsOnParamsChange: boolean,
reloadOnParamsChange: boolean,
withUid: boolean,
editMode: boolean
) => {
config.featureToggles.reloadDashboardsOnParamsChange = reloadDashboardsOnParamsChange;
setDashboardAPI(undefined);
const uid = 'dash-1';
const dashboardScene = renderDashboard({ uid: withUid ? uid : undefined }, { reloadOnParamsChange });
if (editMode) {
await enterEditMode(dashboardScene);
}
const shouldReload = reloadDashboardsOnParamsChange && reloadOnParamsChange && withUid && !editMode;
await updateTimeRange(dashboardScene);
if (!shouldReload) {
expectNotDashboardReload();
} else {
expectDashboardReload();
}
await updateMyVar(dashboardScene, '2');
if (!shouldReload) {
expectNotDashboardReload();
} else {
expectDashboardReload();
}
await updateScopes(['grafana']);
if (!shouldReload) {
expectNotDashboardReload();
} else {
expectDashboardReload();
}
};
describe('Dashboard reload', () => {
beforeAll(() => {
config.featureToggles.scopeFilters = true;
config.featureToggles.groupByVariable = true;
});
afterEach(async () => {
setDashboardAPI(undefined);
await resetScenes();
});
describe('reloadDashboardsOnParamsChange off', () => {
describe('reloadOnParamsChange off', () => {
it('with UID - no reload', () => runTest(false, false, true, false));
it('without UID - no reload', () => runTest(false, false, false, false));
});
describe('reloadOnParamsChange on', () => {
it('with UID - no reload', () => runTest(false, true, true, false));
it('without UID - no reload', () => runTest(false, true, false, false));
});
});
describe('reloadDashboardsOnParamsChange on', () => {
describe('reloadOnParamsChange off', () => {
it('with UID - no reload', () => runTest(true, false, true, false));
it('without UID - no reload', () => runTest(true, false, false, false));
});
describe('reloadOnParamsChange on', () => {
describe('edit mode on', () => {
it('with UID - no reload', () => runTest(true, true, true, true));
it('without UID - no reload', () => runTest(true, true, false, true));
});
describe('edit mode off', () => {
it('with UID - reload', () => runTest(true, true, true, false));
it('without UID - no reload', () => runTest(true, true, false, false));
});
});
});
});