fix bug in filter manager, update test

This commit is contained in:
Joe Fleming 2015-04-24 17:38:56 -07:00
parent 4f945d690c
commit e06c401c65
2 changed files with 38 additions and 21 deletions

View file

@ -31,7 +31,7 @@ define(function (require) {
if (existing) {
if (existing.meta.negate !== negate) {
// existing.meta.negate = negate;
newFilters.invertFilter(existing);
queryFilter.invertFilter(existing);
}
return;
}

View file

@ -1,18 +1,35 @@
define(function (require) {
var filterManager = require('components/filter_manager/filter_manager');
var $state;
var _ = require('lodash');
var MockState = require('fixtures/mock_state');
var filterManager;
var appState;
describe('Filter Manager', function () {
beforeEach(module('kibana'));
beforeEach(function () {
$state = {
filters: []
};
filterManager.init($state);
module('kibana/global_state', function ($provide) {
$provide.service('getAppState', function () {
return function () {
return appState;
};
});
});
});
it('should have an init function that sets the state to be used', function () {
expect(filterManager.init).to.be.a(Function);
filterManager.init($state);
expect(filterManager.$state).to.be($state);
beforeEach(function () {
inject(function (Private) {
filterManager = Private(require('components/filter_manager/filter_manager'));
appState = new MockState();
appState.filters = [];
// mock queryFilter's invertFilter since it's used in the manager
var queryFilter = Private(require('components/filter_bar/query_filter'));
queryFilter.invertFilter = function (filter) {
filter.meta.negate = !filter.meta.negate;
};
});
});
it('should have an `add` function', function () {
@ -20,33 +37,33 @@ define(function (require) {
});
it('should add a filter', function () {
expect($state.filters.length).to.be(0);
expect(appState.filters.length).to.be(0);
filterManager.add('myField', 1, '+', 'myIndex');
expect($state.filters.length).to.be(1);
expect(appState.filters.length).to.be(1);
});
it('should add multiple filters if passed an array of values', function () {
filterManager.add('myField', [1, 2, 3], '+', 'myIndex');
expect($state.filters.length).to.be(3);
expect(appState.filters.length).to.be(3);
});
it('should add an exists filter if _exists_ is used as the field', function () {
filterManager.add('_exists_', 'myField', '+', 'myIndex');
expect($state.filters[0].exists).to.eql({field: 'myField'});
expect(appState.filters[0].exists).to.eql({field: 'myField'});
});
it('Should negate existing filter instead of added a conflicting filter', function () {
filterManager.add('myField', 1, '+', 'myIndex');
expect($state.filters.length).to.be(1);
expect(appState.filters.length).to.be(1);
filterManager.add('myField', 1, '-', 'myIndex');
expect($state.filters.length).to.be(1);
expect($state.filters[0].meta.negate).to.be(true);
expect(appState.filters.length).to.be(1);
expect(appState.filters[0].meta.negate).to.be(true);
filterManager.add('_exists_', 'myField', '+', 'myIndex');
expect($state.filters.length).to.be(2);
expect(appState.filters.length).to.be(2);
filterManager.add('_exists_', 'myField', '-', 'myIndex');
expect($state.filters.length).to.be(2);
expect($state.filters[1].meta.negate).to.be(true);
expect(appState.filters.length).to.be(2);
expect(appState.filters[1].meta.negate).to.be(true);
});
});