Jelajahi Sumber

added unit tests for filterSrv

Torkel Ödegaard 11 tahun lalu
induk
melakukan
dfd1d09641

+ 0 - 2
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) {

+ 6 - 7
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) {

+ 1 - 2
src/test/karma.conf.js

@@ -14,8 +14,7 @@ module.exports = function(config) {
     ],
 
     // list of files to exclude
-    exclude: [
-    ],
+    exclude: [],
 
     reporters: ['progress'],
     port: 9876,

+ 40 - 0
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
+        }
+      }
+    }
+  }
+});

+ 0 - 26
src/test/specs/ctrl-specs.js

@@ -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);
-    });
-
-  });*/
-
-});

+ 60 - 0
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);
+      });
+    });
+
+  });
+
+});

+ 60 - 0
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);
+      });
+    });
+
+  });
+
+});

+ 18 - 7
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();
-});
+  '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();
+  });
+
+});