diff --git a/src/app/panels/overview/module.js b/src/app/panels/overview/module.js index 1e71de1e847..92460e77619 100644 --- a/src/app/panels/overview/module.js +++ b/src/app/panels/overview/module.js @@ -37,7 +37,9 @@ function (angular, app, _) { $scope.init = function() { panelSrv.init(this); - $scope.get_data(); + if (!$scope.skipDataOnInit) { + $scope.get_data(); + } //$scope.$on('refresh', $scope.render); //$scope.render(); }; diff --git a/src/test/specs/overview-ctrl-specs.js b/src/test/specs/overview-ctrl-specs.js index 391737a6c6c..6070a46c3d2 100644 --- a/src/test/specs/overview-ctrl-specs.js +++ b/src/test/specs/overview-ctrl-specs.js @@ -3,46 +3,60 @@ define([ ], function() { 'use strict'; + function ControllerTestContext() { + var self = this; + + this.datasource = {}; + this.datasourceSrv = { + getMetricSources: function() {}, + get: function() { return self.datasource; } + }; + + this.providePhase = function() { + return module(function($provide) { + $provide.value('datasourceSrv', self.datasourceSrv); + }); + }; + + this.createControllerPhase = function(controllerName) { + return inject(function($controller, $rootScope, $q) { + self.scope = $rootScope.$new(); + self.scope.panel = {}; + self.scope.filter = { + timeRange: function() {} + }; + + self.$q = $q; + self.scope.skipDataOnInit = true; + self.controller = $controller(controllerName, { + $scope: self.scope + }); + + }); + }; + + } + describe('OverviewCtrl', function() { - var _controller; - var _scope; - var _datasource; + var ctx = new ControllerTestContext(); beforeEach(module('grafana.services')); beforeEach(module('grafana.panels.overview')); - beforeEach(module(function($provide){ - $provide.value('datasourceSrv',{ - getMetricSources: function() { - }, - get: function() { - return _datasource; - } - }); - })); + beforeEach(ctx.providePhase()); + beforeEach(ctx.createControllerPhase('OverviewCtrl')); - beforeEach(inject(function($controller, $rootScope, $q) { - _scope = $rootScope.$new(); - _scope.panel = { targets: [] }; - _scope.filter = { - timeRange: function() { } - }; - _scope.datasource = { - query: function() { - return $q.resolve('hej'); - } - }; - _controller = $controller('OverviewCtrl', { - $scope: _scope - }); - })); - - describe('init', function() { + describe('when query return error', function() { beforeEach(function() { + ctx.datasource.query = function() { + return ctx.$q.reject({ message: 'Some error' }); + }; + ctx.scope.get_data(); + ctx.scope.$digest(); }); - it('description', function() { - + it('panel.error should be set', function() { + expect(ctx.scope.panel.error).to.be("Some error"); }); }); });