2014-03-22 07:45:02 -05:00
|
|
|
define([
|
2015-09-15 06:23:36 -05:00
|
|
|
'../mocks/dashboard-mock',
|
|
|
|
'./helpers',
|
2014-08-07 07:35:19 -05:00
|
|
|
'lodash',
|
2015-09-17 02:57:59 -05:00
|
|
|
'moment',
|
2015-09-15 06:23:36 -05:00
|
|
|
'app/services/timer',
|
|
|
|
'app/features/dashboard/timeSrv'
|
2015-09-17 02:57:59 -05:00
|
|
|
], function(dashboardMock, helpers, _, moment) {
|
2014-04-06 03:47:14 -05:00
|
|
|
'use strict';
|
2014-03-22 07:45:02 -05:00
|
|
|
|
2014-08-27 09:29:48 -05:00
|
|
|
describe('timeSrv', function() {
|
2014-09-05 05:07:48 -05:00
|
|
|
var ctx = new helpers.ServiceTestContext();
|
2014-04-10 05:44:19 -05:00
|
|
|
var _dashboard;
|
2014-03-22 07:45:02 -05:00
|
|
|
|
2014-07-28 11:11:52 -05:00
|
|
|
beforeEach(module('grafana.services'));
|
2014-09-10 03:46:04 -05:00
|
|
|
beforeEach(ctx.providePhase(['$routeParams']));
|
2014-09-05 05:07:48 -05:00
|
|
|
beforeEach(ctx.createService('timeSrv'));
|
2014-03-22 07:45:02 -05:00
|
|
|
|
2014-05-20 03:23:36 -05:00
|
|
|
beforeEach(function() {
|
2014-09-05 05:07:48 -05:00
|
|
|
_dashboard = dashboardMock.create();
|
|
|
|
ctx.service.init(_dashboard);
|
2014-05-20 03:23:36 -05:00
|
|
|
});
|
|
|
|
|
2014-03-22 07:45:02 -05:00
|
|
|
describe('timeRange', function() {
|
|
|
|
it('should return unparsed when parse is false', function() {
|
2014-09-05 05:07:48 -05:00
|
|
|
ctx.service.setTime({from: 'now', to: 'now-1h' });
|
|
|
|
var time = ctx.service.timeRange(false);
|
2014-03-22 07:45:02 -05:00
|
|
|
expect(time.from).to.be('now');
|
|
|
|
expect(time.to).to.be('now-1h');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return parsed when parse is true', function() {
|
2014-09-05 05:07:48 -05:00
|
|
|
ctx.service.setTime({from: 'now', to: 'now-1h' });
|
|
|
|
var time = ctx.service.timeRange(true);
|
2015-09-17 02:57:59 -05:00
|
|
|
expect(moment.isMoment(time.from)).to.be(true);
|
|
|
|
expect(moment.isMoment(time.to)).to.be(true);
|
2014-03-22 07:45:02 -05:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2014-09-10 03:46:04 -05:00
|
|
|
describe('init time from url', function() {
|
|
|
|
it('should handle relative times', function() {
|
|
|
|
ctx.$routeParams.from = 'now-2d';
|
|
|
|
ctx.$routeParams.to = 'now';
|
|
|
|
ctx.service.init(_dashboard);
|
|
|
|
var time = ctx.service.timeRange(false);
|
|
|
|
expect(time.from).to.be('now-2d');
|
|
|
|
expect(time.to).to.be('now');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should handle formated dates', function() {
|
|
|
|
ctx.$routeParams.from = '20140410T052010';
|
|
|
|
ctx.$routeParams.to = '20140520T031022';
|
|
|
|
ctx.service.init(_dashboard);
|
|
|
|
var time = ctx.service.timeRange(true);
|
2015-09-17 02:57:59 -05:00
|
|
|
expect(time.from.valueOf()).to.equal(new Date("2014-04-10T05:20:10Z").getTime());
|
|
|
|
expect(time.to.valueOf()).to.equal(new Date("2014-05-20T03:10:22Z").getTime());
|
2014-09-10 03:46:04 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should handle formated dates without time', function() {
|
|
|
|
ctx.$routeParams.from = '20140410';
|
|
|
|
ctx.$routeParams.to = '20140520';
|
|
|
|
ctx.service.init(_dashboard);
|
|
|
|
var time = ctx.service.timeRange(true);
|
2015-09-17 02:57:59 -05:00
|
|
|
expect(time.from.valueOf()).to.equal(new Date("2014-04-10T00:00:00Z").getTime());
|
|
|
|
expect(time.to.valueOf()).to.equal(new Date("2014-05-20T00:00:00Z").getTime());
|
2014-09-10 03:46:04 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should handle epochs', function() {
|
|
|
|
ctx.$routeParams.from = '1410337646373';
|
|
|
|
ctx.$routeParams.to = '1410337665699';
|
|
|
|
ctx.service.init(_dashboard);
|
|
|
|
var time = ctx.service.timeRange(true);
|
2015-09-17 02:57:59 -05:00
|
|
|
expect(time.from.valueOf()).to.equal(1410337646373);
|
|
|
|
expect(time.to.valueOf()).to.equal(1410337665699);
|
2014-09-10 03:46:04 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
2014-04-10 05:44:19 -05:00
|
|
|
describe('setTime', function() {
|
|
|
|
it('should return disable refresh for absolute times', function() {
|
2014-08-27 10:58:49 -05:00
|
|
|
_dashboard.refresh = false;
|
2014-04-10 05:44:19 -05:00
|
|
|
|
2014-09-05 05:07:48 -05:00
|
|
|
ctx.service.setTime({from: '2011-01-01', to: '2015-01-01' });
|
2014-07-07 12:04:22 -05:00
|
|
|
expect(_dashboard.refresh).to.be(false);
|
2014-04-10 05:44:19 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should restore refresh after relative time range is set', function() {
|
2014-08-27 10:58:49 -05:00
|
|
|
_dashboard.refresh = '10s';
|
2015-10-08 10:39:06 -05:00
|
|
|
ctx.service.setTime({from: moment([2011,1,1]), to: moment([2015,1,1])});
|
2014-07-07 12:04:22 -05:00
|
|
|
expect(_dashboard.refresh).to.be(false);
|
2014-09-05 05:07:48 -05:00
|
|
|
ctx.service.setTime({from: '2011-01-01', to: 'now' });
|
2014-08-27 10:58:49 -05:00
|
|
|
expect(_dashboard.refresh).to.be('10s');
|
2014-04-10 05:44:19 -05:00
|
|
|
});
|
2015-05-26 09:48:23 -05:00
|
|
|
|
|
|
|
it('should keep refresh after relative time range is changed and now delay exists', function() {
|
|
|
|
_dashboard.refresh = '10s';
|
|
|
|
ctx.service.setTime({from: 'now-1h', to: 'now-10s' });
|
|
|
|
expect(_dashboard.refresh).to.be('10s');
|
|
|
|
});
|
2014-04-10 05:44:19 -05:00
|
|
|
});
|
|
|
|
|
2014-03-22 07:45:02 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
});
|