grafana/public/app/features/dashboard/specs/save_as_modal.test.ts

68 lines
1.7 KiB
TypeScript

import { SaveDashboardAsModalCtrl } from '../save_as_modal';
import { describe, it, expect } from 'test/lib/common';
describe('saving dashboard as', () => {
function scenario(name, panel, verify) {
describe(name, () => {
const json = {
title: 'name',
panels: [panel],
};
const mockDashboardSrv = {
getCurrent: () => {
return {
id: 5,
meta: {},
getSaveModelClone: () => {
return json;
},
};
},
};
const ctrl = new SaveDashboardAsModalCtrl(mockDashboardSrv);
const ctx: any = {
clone: ctrl.clone,
ctrl: ctrl,
panel: panel,
};
it('verify', () => {
verify(ctx);
});
});
}
scenario('default values', {}, ctx => {
const clone = ctx.clone;
expect(clone.id).toBe(null);
expect(clone.title).toBe('name Copy');
expect(clone.editable).toBe(true);
expect(clone.hideControls).toBe(false);
});
const graphPanel = {
id: 1,
type: 'graph',
alert: { rule: 1 },
thresholds: { value: 3000 },
};
scenario('should remove alert from graph panel', graphPanel, ctx => {
expect(ctx.panel.alert).toBe(undefined);
});
scenario('should remove threshold from graph panel', graphPanel, ctx => {
expect(ctx.panel.thresholds).toBe(undefined);
});
scenario('singlestat should keep threshold', { id: 1, type: 'singlestat', thresholds: { value: 3000 } }, ctx => {
expect(ctx.panel.thresholds).not.toBe(undefined);
});
scenario('table should keep threshold', { id: 1, type: 'table', thresholds: { value: 3000 } }, ctx => {
expect(ctx.panel.thresholds).not.toBe(undefined);
});
});