From dfd1d09641cb67afe99ec8de7c811fcde2d40e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Sat, 22 Mar 2014 13:45:02 +0100 Subject: [PATCH] added unit tests for filterSrv --- src/app/services/datasourceSrv.js | 2 - src/app/services/filterSrv.js | 13 +++-- src/test/karma.conf.js | 3 +- src/test/mocks/dashboard-mock.js | 40 +++++++++++++++ src/test/specs/ctrl-specs.js | 26 ---------- src/test/specs/filterSrv-specs.js | 60 ++++++++++++++++++++++ src/test/specs/graphiteTargetCtrl-specs.js | 60 ++++++++++++++++++++++ src/test/test-main.js | 25 ++++++--- 8 files changed, 185 insertions(+), 44 deletions(-) create mode 100644 src/test/mocks/dashboard-mock.js delete mode 100644 src/test/specs/ctrl-specs.js create mode 100644 src/test/specs/filterSrv-specs.js create mode 100644 src/test/specs/graphiteTargetCtrl-specs.js diff --git a/src/app/services/datasourceSrv.js b/src/app/services/datasourceSrv.js index d05bd11e278..77f0f9f1142 100644 --- a/src/app/services/datasourceSrv.js +++ b/src/app/services/datasourceSrv.js @@ -13,10 +13,8 @@ function (angular, _, config) { module.service('datasourceSrv', function($q, filterSrv, $http, GraphiteDatasource, InfluxDatasource) { this.init = function() { - var defaultDatasource = _.findWhere(_.values(config.datasources), { default: true } ); this.default = this.datasourceFactory(defaultDatasource); - }; this.datasourceFactory = function(ds) { diff --git a/src/app/services/filterSrv.js b/src/app/services/filterSrv.js index c62015a6927..aeb2ef71344 100644 --- a/src/app/services/filterSrv.js +++ b/src/app/services/filterSrv.js @@ -32,12 +32,12 @@ define([ }; if (self.list.length) { - this.updateTemplateData(true); + this._updateTemplateData(true); } }; - this.updateTemplateData = function(initial) { - self.filterTemplateData = {}; + this._updateTemplateData = function(initial) { + self._filterTemplateData = {}; _.each(self.list, function(filter) { if (initial) { @@ -46,18 +46,17 @@ define([ filter.current = { text: urlValue, value: urlValue }; } } - if (!filter.current || !filter.current.value) { return; } - self.filterTemplateData[filter.name] = filter.current.value; + self._filterTemplateData[filter.name] = filter.current.value; }); }; this.filterOptionSelected = function(filter, option) { filter.current = option; - this.updateTemplateData(); + this._updateTemplateData(); dashboard.refresh(); }; @@ -70,7 +69,7 @@ define([ return target; } - return _.template(target, self.filterTemplateData, self.templateSettings); + return _.template(target, self._filterTemplateData, self.templateSettings); }; this.remove = function(filter) { diff --git a/src/test/karma.conf.js b/src/test/karma.conf.js index 765511a30ff..10547493cfa 100644 --- a/src/test/karma.conf.js +++ b/src/test/karma.conf.js @@ -14,8 +14,7 @@ module.exports = function(config) { ], // list of files to exclude - exclude: [ - ], + exclude: [], reporters: ['progress'], port: 9876, diff --git a/src/test/mocks/dashboard-mock.js b/src/test/mocks/dashboard-mock.js new file mode 100644 index 00000000000..64294f98848 --- /dev/null +++ b/src/test/mocks/dashboard-mock.js @@ -0,0 +1,40 @@ +define([], + function() { + + return { + create: function() { + return { + refresh: function() {}, + + current: { + title: "", + tags: [], + style: "dark", + timezone: 'browser', + editable: true, + failover: false, + panel_hints: true, + rows: [], + pulldowns: [ { type: 'templating' }, { type: 'annotations' } ], + nav: [ { type: 'timepicker' } ], + services: {}, + loader: { + save_gist: false, + save_elasticsearch: true, + save_local: true, + save_default: true, + save_temp: true, + save_temp_ttl_enable: true, + save_temp_ttl: '30d', + load_gist: false, + load_elasticsearch: true, + load_elasticsearch_size: 20, + load_local: false, + hide: false + }, + refresh: false + } + } + } + } +}); diff --git a/src/test/specs/ctrl-specs.js b/src/test/specs/ctrl-specs.js deleted file mode 100644 index 2bd2f21d79c..00000000000 --- a/src/test/specs/ctrl-specs.js +++ /dev/null @@ -1,26 +0,0 @@ -define([ - 'angular', - 'angularMocks', - 'panels/graphite/module' -], function(angular) { - - /* describe('controller', function() { - var scope, metricCtrl; - - beforeEach(function() { - angular.mock.inject(function($rootScope, $controller) { - scope = $rootScope.$new(); - metricCtrl = $controller('kibana.panels.graphite.graphite', { - $scope: scope - }); - }); - }); - - it('should work', function() { - metricCtrl.toggleYAxis({alias:'myAlias'}); - scope.panel.aliasYAxis['myAlias'].should.be(2); - }); - - });*/ - -}); diff --git a/src/test/specs/filterSrv-specs.js b/src/test/specs/filterSrv-specs.js new file mode 100644 index 00000000000..f4a38065abd --- /dev/null +++ b/src/test/specs/filterSrv-specs.js @@ -0,0 +1,60 @@ +define([ + 'mocks/dashboard-mock', + 'underscore', + 'services/filterSrv' +], function(dashboardMock, _) { + + describe('filterSrv', function() { + var _filterSrv; + + beforeEach(module('kibana.services')); + beforeEach(module(function($provide){ + $provide.value('dashboard', dashboardMock.create()); + })); + + beforeEach(inject(function(filterSrv) { + _filterSrv = filterSrv; + })); + + describe('init', function() { + beforeEach(function() { + _filterSrv.add({ name: 'test', current: { value: 'oogle' } }); + _filterSrv.init(); + }); + + it('should initialize template data', function() { + var target = _filterSrv.applyFilterToTarget('this.[[test]].filters'); + expect(target).to.be('this.oogle.filters'); + }); + }); + + describe.only('filterOptionSelected', function() { + beforeEach(function() { + _filterSrv.add({ name: 'test' }); + _filterSrv.filterOptionSelected(_filterSrv.list[0], { value: 'muuuu' }); + }); + it('should set current value and update template data', function() { + var target = _filterSrv.applyFilterToTarget('this.[[test]].filters'); + expect(target).to.be('this.muuuu.filters'); + }); + }); + + describe('timeRange', function() { + it('should return unparsed when parse is false', function() { + _filterSrv.setTime({from: 'now', to: 'now-1h' }); + var time = _filterSrv.timeRange(false); + expect(time.from).to.be('now'); + expect(time.to).to.be('now-1h'); + }); + + it('should return parsed when parse is true', function() { + _filterSrv.setTime({from: 'now', to: 'now-1h' }); + var time = _filterSrv.timeRange(true); + expect(_.isDate(time.from)).to.be(true); + expect(_.isDate(time.to)).to.be(true); + }); + }); + + }); + +}); diff --git a/src/test/specs/graphiteTargetCtrl-specs.js b/src/test/specs/graphiteTargetCtrl-specs.js new file mode 100644 index 00000000000..f4a38065abd --- /dev/null +++ b/src/test/specs/graphiteTargetCtrl-specs.js @@ -0,0 +1,60 @@ +define([ + 'mocks/dashboard-mock', + 'underscore', + 'services/filterSrv' +], function(dashboardMock, _) { + + describe('filterSrv', function() { + var _filterSrv; + + beforeEach(module('kibana.services')); + beforeEach(module(function($provide){ + $provide.value('dashboard', dashboardMock.create()); + })); + + beforeEach(inject(function(filterSrv) { + _filterSrv = filterSrv; + })); + + describe('init', function() { + beforeEach(function() { + _filterSrv.add({ name: 'test', current: { value: 'oogle' } }); + _filterSrv.init(); + }); + + it('should initialize template data', function() { + var target = _filterSrv.applyFilterToTarget('this.[[test]].filters'); + expect(target).to.be('this.oogle.filters'); + }); + }); + + describe.only('filterOptionSelected', function() { + beforeEach(function() { + _filterSrv.add({ name: 'test' }); + _filterSrv.filterOptionSelected(_filterSrv.list[0], { value: 'muuuu' }); + }); + it('should set current value and update template data', function() { + var target = _filterSrv.applyFilterToTarget('this.[[test]].filters'); + expect(target).to.be('this.muuuu.filters'); + }); + }); + + describe('timeRange', function() { + it('should return unparsed when parse is false', function() { + _filterSrv.setTime({from: 'now', to: 'now-1h' }); + var time = _filterSrv.timeRange(false); + expect(time.from).to.be('now'); + expect(time.to).to.be('now-1h'); + }); + + it('should return parsed when parse is true', function() { + _filterSrv.setTime({from: 'now', to: 'now-1h' }); + var time = _filterSrv.timeRange(true); + expect(_.isDate(time.from)).to.be(true); + expect(_.isDate(time.to)).to.be(true); + }); + }); + + }); + +}); diff --git a/src/test/test-main.js b/src/test/test-main.js index 4042c0e186e..ec18e3877d3 100644 --- a/src/test/test-main.js +++ b/src/test/test-main.js @@ -3,6 +3,7 @@ require.config({ paths: { specs: '../test/specs', + mocks: '../test/mocks', config: '../config.sample', kbn: 'components/kbn', @@ -102,10 +103,20 @@ require.config({ }); require([ - 'specs/lexer-specs', - 'specs/parser-specs', - 'specs/gfunc-specs', - 'specs/ctrl-specs', -], function () { - window.__karma__.start(); -}); \ No newline at end of file + 'angular', + 'angularMocks', +], function(angular) { + + angular.module('kibana', []); + angular.module('kibana.services', []); + + require([ + 'specs/lexer-specs', + 'specs/parser-specs', + 'specs/gfunc-specs', + 'specs/filterSrv-specs', + ], function () { + window.__karma__.start(); + }); + +});