mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
added some unit tests for graph panel controller
This commit is contained in:
parent
02fb2baf62
commit
abc8077a96
@ -1,4 +1,4 @@
|
|||||||
<div ng-controller='graph'
|
<div ng-controller='GraphCtrl'
|
||||||
style="min-height:{{panel.height || row.height}}"
|
style="min-height:{{panel.height || row.height}}"
|
||||||
ng-class="{'panel-fullscreen': fullscreen}">
|
ng-class="{'panel-fullscreen': fullscreen}">
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ define([
|
|||||||
'kbn',
|
'kbn',
|
||||||
'moment',
|
'moment',
|
||||||
'./timeSeries',
|
'./timeSeries',
|
||||||
|
'services/panelSrv',
|
||||||
'services/annotationsSrv',
|
'services/annotationsSrv',
|
||||||
'services/datasourceSrv',
|
'services/datasourceSrv',
|
||||||
'jquery.flot',
|
'jquery.flot',
|
||||||
@ -35,7 +36,7 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|||||||
var module = angular.module('grafana.panels.graph', []);
|
var module = angular.module('grafana.panels.graph', []);
|
||||||
app.useModule(module);
|
app.useModule(module);
|
||||||
|
|
||||||
module.controller('graph', function($scope, $rootScope, $timeout, panelSrv, annotationsSrv) {
|
module.controller('GraphCtrl', function($scope, $rootScope, $timeout, panelSrv, annotationsSrv) {
|
||||||
|
|
||||||
$scope.panelMeta = {
|
$scope.panelMeta = {
|
||||||
modals : [],
|
modals : [],
|
||||||
@ -190,12 +191,14 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
panelSrv.init($scope);
|
panelSrv.init($scope);
|
||||||
$scope.hiddenSeries = {};
|
$scope.hiddenSeries = {};
|
||||||
$scope.get_data();
|
if (!$scope.skipDataOnInit) {
|
||||||
|
$scope.get_data();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.updateTimeRange = function () {
|
$scope.updateTimeRange = function () {
|
||||||
$scope.range = this.filter.timeRange();
|
$scope.range = $scope.filter.timeRange();
|
||||||
$scope.rangeUnparsed = this.filter.timeRange(false);
|
$scope.rangeUnparsed = $scope.filter.timeRange(false);
|
||||||
$scope.resolution = Math.ceil($(window).width() * ($scope.panel.span / 12));
|
$scope.resolution = Math.ceil($(window).width() * ($scope.panel.span / 12));
|
||||||
$scope.interval = '10m';
|
$scope.interval = '10m';
|
||||||
|
|
||||||
|
44
src/test/specs/graph-ctrl-specs.js
Normal file
44
src/test/specs/graph-ctrl-specs.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
define([
|
||||||
|
'./helpers',
|
||||||
|
'panels/graph/module'
|
||||||
|
], function(helpers) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
describe('GraphCtrl', function() {
|
||||||
|
var ctx = new helpers.ControllerTestContext();
|
||||||
|
|
||||||
|
beforeEach(module('grafana.services'));
|
||||||
|
beforeEach(module('grafana.panels.graph'));
|
||||||
|
|
||||||
|
beforeEach(ctx.providePhase());
|
||||||
|
beforeEach(ctx.createControllerPhase('GraphCtrl'));
|
||||||
|
|
||||||
|
describe('get_data with 2 series', function() {
|
||||||
|
beforeEach(function() {
|
||||||
|
ctx.annotationsSrv.getAnnotations = sinon.stub().returns(ctx.$q.when([]));
|
||||||
|
ctx.datasource.query = sinon.stub().returns(ctx.$q.when({
|
||||||
|
data: [
|
||||||
|
{ target: 'test.cpu1', datapoints: [[1, 10]]},
|
||||||
|
{ target: 'test.cpu2', datapoints: [[1, 10]]}
|
||||||
|
]
|
||||||
|
}));
|
||||||
|
ctx.scope.render = sinon.spy();
|
||||||
|
ctx.scope.get_data();
|
||||||
|
ctx.scope.$digest();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should build legend model', function() {
|
||||||
|
expect(ctx.scope.legend[0].alias).to.be('test.cpu1');
|
||||||
|
expect(ctx.scope.legend[1].alias).to.be('test.cpu2');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should send time series to render', function() {
|
||||||
|
var data = ctx.scope.render.getCall(0).args[0];
|
||||||
|
expect(data.length).to.be(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
/*define([
|
|
||||||
'panels/graphite/module'
|
|
||||||
], function() {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
describe('Graph panel controller', function() {
|
|
||||||
var _graphPanelCtrl;
|
|
||||||
|
|
||||||
beforeEach(module('grafana.panels.graphite'));
|
|
||||||
beforeEach(module(function($provide){
|
|
||||||
$provide.value('filterSrv',{});
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(inject(function($controller, $rootScope) {
|
|
||||||
_graphPanelCtrl = $controller('graphite', {
|
|
||||||
$scope: $rootScope.$new()
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('init', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
});
|
|
||||||
|
|
||||||
it('asd', function() {
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
*/
|
|
@ -1,11 +1,14 @@
|
|||||||
define([
|
define([
|
||||||
], function() {
|
'kbn'
|
||||||
|
], function(kbn) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
function ControllerTestContext() {
|
function ControllerTestContext() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
this.timeRange = { from:'now-1h', to: 'now'};
|
||||||
this.datasource = {};
|
this.datasource = {};
|
||||||
|
this.annotationsSrv = {};
|
||||||
this.datasourceSrv = {
|
this.datasourceSrv = {
|
||||||
getMetricSources: function() {},
|
getMetricSources: function() {},
|
||||||
get: function() { return self.datasource; }
|
get: function() { return self.datasource; }
|
||||||
@ -14,6 +17,7 @@ define([
|
|||||||
this.providePhase = function() {
|
this.providePhase = function() {
|
||||||
return module(function($provide) {
|
return module(function($provide) {
|
||||||
$provide.value('datasourceSrv', self.datasourceSrv);
|
$provide.value('datasourceSrv', self.datasourceSrv);
|
||||||
|
$provide.value('annotationsSrv', self.annotationsSrv);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -22,9 +26,20 @@ define([
|
|||||||
self.scope = $rootScope.$new();
|
self.scope = $rootScope.$new();
|
||||||
self.scope.panel = {};
|
self.scope.panel = {};
|
||||||
self.scope.filter = {
|
self.scope.filter = {
|
||||||
timeRange: function() {}
|
timeRange: function(parse) {
|
||||||
|
if (!parse) {
|
||||||
|
return self.timeRange;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
from : kbn.parseDate(self.timeRange.from),
|
||||||
|
to : kbn.parseDate(self.timeRange.to)
|
||||||
|
};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.scope.colors = [];
|
||||||
|
for (var i = 0; i < 50; i++) { self.scope.colors.push('#' + i); }
|
||||||
|
|
||||||
self.$q = $q;
|
self.$q = $q;
|
||||||
self.scope.skipDataOnInit = true;
|
self.scope.skipDataOnInit = true;
|
||||||
self.controller = $controller(controllerName, {
|
self.controller = $controller(controllerName, {
|
||||||
|
@ -118,6 +118,7 @@ require([
|
|||||||
'specs/parser-specs',
|
'specs/parser-specs',
|
||||||
'specs/gfunc-specs',
|
'specs/gfunc-specs',
|
||||||
'specs/graphiteTargetCtrl-specs',
|
'specs/graphiteTargetCtrl-specs',
|
||||||
|
'specs/graph-ctrl-specs',
|
||||||
'specs/filterSrv-specs',
|
'specs/filterSrv-specs',
|
||||||
'specs/kbn-format-specs',
|
'specs/kbn-format-specs',
|
||||||
'specs/dashboardModel-specs',
|
'specs/dashboardModel-specs',
|
||||||
|
Loading…
Reference in New Issue
Block a user