Files
grafana/public/app/features/dashboard/specs/unsaved_changes_srv_specs.ts

96 lines
2.6 KiB
TypeScript
Raw Normal View History

import { describe, beforeEach, it, expect, sinon, angularMocks } from 'test/lib/common';
2017-12-21 13:22:20 +01:00
import { Tracker } from 'app/features/dashboard/unsaved_changes_srv';
2017-12-20 12:33:33 +01:00
import 'app/features/dashboard/dashboard_srv';
2017-12-21 13:22:20 +01:00
import { contextSrv } from 'app/core/core';
2017-12-20 12:33:33 +01:00
describe('unsavedChangesSrv', function() {
var _dashboardSrv;
var _contextSrvStub = { isEditor: true };
var _rootScope;
2017-12-21 13:22:20 +01:00
var _location;
var _timeout;
var _window;
var tracker;
var dash;
var scope;
2017-12-20 12:33:33 +01:00
beforeEach(angularMocks.module('grafana.core'));
beforeEach(angularMocks.module('grafana.services'));
beforeEach(
angularMocks.module(function($provide) {
2017-12-20 12:33:33 +01:00
$provide.value('contextSrv', _contextSrvStub);
$provide.value('$window', {});
})
);
beforeEach(
angularMocks.inject(function($location, $rootScope, dashboardSrv, $timeout, $window) {
_dashboardSrv = dashboardSrv;
_rootScope = $rootScope;
2017-12-21 13:22:20 +01:00
_location = $location;
_timeout = $timeout;
_window = $window;
})
);
beforeEach(function() {
dash = _dashboardSrv.create({
refresh: false,
2017-12-20 12:33:33 +01:00
panels: [{ test: 'asd', legend: {} }],
rows: [
{
2017-12-20 12:33:33 +01:00
panels: [{ test: 'asd', legend: {} }],
},
],
});
scope = _rootScope.$new();
scope.appEvent = sinon.spy();
scope.onAppEvent = sinon.spy();
tracker = new Tracker(dash, scope, undefined, _location, _window, _timeout, contextSrv, _rootScope);
});
2017-12-20 12:33:33 +01:00
it('No changes should not have changes', function() {
expect(tracker.hasChanges()).to.be(false);
});
2017-12-20 12:33:33 +01:00
it('Simple change should be registered', function() {
dash.property = 'google';
expect(tracker.hasChanges()).to.be(true);
});
2017-12-20 12:33:33 +01:00
it('Should ignore a lot of changes', function() {
dash.time = { from: '1h' };
dash.refresh = true;
dash.schemaVersion = 10;
expect(tracker.hasChanges()).to.be(false);
});
it('Should ignore .iteration changes', () => {
dash.iteration = new Date().getTime() + 1;
expect(tracker.hasChanges()).to.be(false);
});
2017-12-20 12:33:33 +01:00
it.skip('Should ignore row collapse change', function() {
dash.rows[0].collapse = true;
expect(tracker.hasChanges()).to.be(false);
});
2017-12-20 12:33:33 +01:00
it('Should ignore panel legend changes', function() {
dash.panels[0].legend.sortDesc = true;
2017-12-20 12:33:33 +01:00
dash.panels[0].legend.sort = 'avg';
expect(tracker.hasChanges()).to.be(false);
});
2017-12-20 12:33:33 +01:00
it.skip('Should ignore panel repeats', function() {
dash.rows[0].panels.push({ repeatPanelId: 10 });
expect(tracker.hasChanges()).to.be(false);
});
2017-12-20 12:33:33 +01:00
it.skip('Should ignore row repeats', function() {
dash.addEmptyRow();
dash.rows[1].repeatRowId = 10;
expect(tracker.hasChanges()).to.be(false);
});
});