add tests around filter toggling

This commit is contained in:
Joe Fleming 2015-04-30 13:44:51 -07:00
parent 67daea5493
commit 3ef527f170
2 changed files with 143 additions and 0 deletions

View file

@ -0,0 +1,142 @@
define(function (require) {
return ['toggle filters', function () {
var _ = require('lodash');
var MockState = require('fixtures/mock_state');
var storeNames = {
app: 'appState',
global: 'globalState'
};
var filters;
var queryFilter;
var $rootScope, appState, globalState;
beforeEach(module('kibana'));
beforeEach(function () {
appState = new MockState({ filters: [] });
globalState = new MockState({ filters: [] });
filters = [
{
query: { match: { extension: { query: 'jpg', type: 'phrase' } } },
meta: { negate: false, disabled: false }
},
{
query: { match: { '@tags': { query: 'info', type: 'phrase' } } },
meta: { negate: false, disabled: false }
},
{
query: { match: { '_type': { query: 'nginx', type: 'phrase' } } },
meta: { negate: false, disabled: false }
}
];
});
beforeEach(function () {
module('kibana/global_state', function ($provide) {
$provide.service('getAppState', function () {
return function () {
return appState;
};
});
$provide.service('globalState', function () {
return globalState;
});
});
});
beforeEach(function () {
inject(function (_$rootScope_, Private) {
$rootScope = _$rootScope_;
queryFilter = Private(require('components/filter_bar/query_filter'));
});
});
describe('toggling a filter', function () {
it('should toggle the disabled property in appState', function () {
_.each(filters, function (filter) {
expect(filter.meta.disabled).to.be(false);
appState.filters.push(filter);
});
queryFilter.toggleFilter(filters[1]);
expect(appState.filters[1].meta.disabled).to.be(true);
});
it('should toggle the disabled property in globalState', function () {
_.each(filters, function (filter) {
expect(filter.meta.disabled).to.be(false);
globalState.filters.push(filter);
});
queryFilter.toggleFilter(filters[1]);
expect(globalState.filters[1].meta.disabled).to.be(true);
});
it('should always enable the filter', function () {
appState.filters = filters.map(function (filter) {
filter.meta.disabled = true;
return filter;
});
expect(appState.filters[1].meta.disabled).to.be(true);
queryFilter.toggleFilter(filters[1], false);
expect(appState.filters[1].meta.disabled).to.be(false);
queryFilter.toggleFilter(filters[1], false);
expect(appState.filters[1].meta.disabled).to.be(false);
});
it('should always disable the filter', function () {
globalState.filters = filters;
expect(globalState.filters[1].meta.disabled).to.be(false);
queryFilter.toggleFilter(filters[1], true);
expect(globalState.filters[1].meta.disabled).to.be(true);
queryFilter.toggleFilter(filters[1], true);
expect(globalState.filters[1].meta.disabled).to.be(true);
});
});
describe('bulk toggling', function () {
beforeEach(function () {
appState.filters = filters;
globalState.filters = _.map(_.cloneDeep(filters), function (filter) {
filter.meta.disabled = true;
return filter;
});
});
it('should swap the enabled state for all filters', function () {
queryFilter.toggleAll();
_.each(appState.filters, function (filter) {
expect(filter.meta.disabled).to.be(true);
});
_.each(globalState.filters, function (filter) {
expect(filter.meta.disabled).to.be(false);
});
});
it('should enable all filters', function () {
queryFilter.toggleAll(true);
_.each(appState.filters, function (filter) {
expect(filter.meta.disabled).to.be(true);
});
_.each(globalState.filters, function (filter) {
expect(filter.meta.disabled).to.be(true);
});
});
it('should disable all filters', function () {
queryFilter.toggleAll(false);
_.each(appState.filters, function (filter) {
expect(filter.meta.disabled).to.be(false);
});
_.each(globalState.filters, function (filter) {
expect(filter.meta.disabled).to.be(false);
});
});
});
}];
});

View file

@ -48,6 +48,7 @@ define(function (require) {
require('specs/components/filter_bar/_getFilters'),
require('specs/components/filter_bar/_addFilters'),
require('specs/components/filter_bar/_removeFilters'),
require('specs/components/filter_bar/_toggleFilters'),
].forEach(function (s) {
describe(s[0], s[1]);
});