| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import { ChangeTracker } from './ChangeTracker';
- import { contextSrv } from 'app/core/services/context_srv';
- import { DashboardModel } from '../state/DashboardModel';
- import { PanelModel } from '../state/PanelModel';
- jest.mock('app/core/services/context_srv', () => ({
- contextSrv: {
- user: { orgId: 1 },
- },
- }));
- describe('ChangeTracker', () => {
- let rootScope;
- let location;
- const timeout = () => {};
- let tracker: ChangeTracker;
- let dash;
- let scope;
- beforeEach(() => {
- dash = new DashboardModel({
- refresh: false,
- panels: [
- {
- id: 1,
- type: 'graph',
- gridPos: { x: 0, y: 0, w: 24, h: 6 },
- legend: { sortDesc: false },
- },
- {
- id: 2,
- type: 'row',
- gridPos: { x: 0, y: 6, w: 24, h: 2 },
- collapsed: true,
- panels: [
- { id: 3, type: 'graph', gridPos: { x: 0, y: 6, w: 12, h: 2 } },
- { id: 4, type: 'graph', gridPos: { x: 12, y: 6, w: 12, h: 2 } },
- ],
- },
- { id: 5, type: 'row', gridPos: { x: 0, y: 6, w: 1, h: 1 } },
- ],
- });
- scope = {
- appEvent: jest.fn(),
- onAppEvent: jest.fn(),
- $on: jest.fn(),
- };
- rootScope = {
- appEvent: jest.fn(),
- onAppEvent: jest.fn(),
- $on: jest.fn(),
- };
- location = {
- path: jest.fn(),
- };
- tracker = new ChangeTracker(dash, scope, undefined, location, window, timeout, contextSrv, rootScope);
- });
- it('No changes should not have changes', () => {
- expect(tracker.hasChanges()).toBe(false);
- });
- it('Simple change should be registered', () => {
- dash.title = 'google';
- expect(tracker.hasChanges()).toBe(true);
- });
- it('Should ignore a lot of changes', () => {
- dash.time = { from: '1h' };
- dash.refresh = true;
- dash.schemaVersion = 10;
- expect(tracker.hasChanges()).toBe(false);
- });
- it('Should ignore .iteration changes', () => {
- dash.iteration = new Date().getTime() + 1;
- expect(tracker.hasChanges()).toBe(false);
- });
- it('Should ignore row collapse change', () => {
- dash.toggleRow(dash.panels[1]);
- expect(tracker.hasChanges()).toBe(false);
- });
- it('Should ignore panel legend changes', () => {
- dash.panels[0].legend.sortDesc = true;
- dash.panels[0].legend.sort = 'avg';
- expect(tracker.hasChanges()).toBe(false);
- });
- it('Should ignore panel repeats', () => {
- dash.panels.push(new PanelModel({ repeatPanelId: 10 }));
- expect(tracker.hasChanges()).toBe(false);
- });
- });
|