TableFilter/test/test-popup-filter-one-row.js

139 lines
3.5 KiB
JavaScript

var tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
popup_filters: true
});
tf.init();
var popupFilter = tf.feature('popupFilter');
module('Sanity checks');
test('Pop-up filter component', function() {
notEqual(popupFilter, null, 'PopupFilter instanciated');
deepEqual(popupFilter.fltElms instanceof Array,
true, 'Type of fltElms property');
deepEqual(
popupFilter.adjustToContainer,
true,
'Popup filter width adjusts to container'
);
deepEqual(tf.headersRow, 1, 'Headers row index');
// issue 99: getHeadersText for pick-list filter types
deepEqual(
tf.getHeadersText()[2],
'Road Distance (km)',
'Expected header text for multiple filter type'
);
deepEqual(
tf.getHeadersText()[3],
'By Air (hrs)',
'Expected header text for multiple filter type'
);
deepEqual(tf.dom().rows[tf.headersRow-1].style.display, 'none',
'Extra row hidden');
});
module('UI elements');
test('Pop-up filter UI elements', function() {
var flt1 = tf.getFilterElement(0);
var flt2 = tf.getFilterElement(1);
var fltIcn1 = popupFilter.fltIcons[0];
var fltIcn2 = popupFilter.fltIcons[1];
notEqual(flt1, null, 'Filter element exists');
notEqual(flt2, null, 'Filter element exists');
deepEqual(fltIcn1.nodeName, 'IMG', 'Filter icon exists');
deepEqual(fltIcn2.nodeName, 'IMG', 'Filter icon exists');
});
test('Can open pop-up filter', function(){
// act
popupFilter.open(1);
// assert
deepEqual(popupFilter.fltElms[1].style.display, 'block',
'Popup filter is open');
});
test('Can close pop-up filter', function(){
// act
popupFilter.close(1);
// assert
deepEqual(popupFilter.fltElms[1].style.display, 'none',
'Popup filter is open');
});
test('Can toggle pop-up filter (initially closed)', function(){
// setup
popupFilter.close(2);
// act
popupFilter.toggle(2);
// assert
deepEqual(popupFilter.fltElms[2].style.display, 'block',
'Popup filter is toggled');
});
test('Can toggle pop-up filter (initially opened)', function(){
// setup
popupFilter.open(2);
// act
popupFilter.toggle(2);
// assert
deepEqual(popupFilter.fltElms[2].style.display, 'none',
'Popup filter is toggled');
});
test('Pop-up filter closes upon filtering', function(){
// setup
popupFilter.open(1);
// act
tf.setFilterValue(1, 'Adelaide');
tf.filter();
// assert
deepEqual(popupFilter.isOpen(1), false,
'Pop-up filter closed after filtering'
);
});
test('Pop-up filter auto-closes when user clicks away', function() {
// setup
popupFilter.open(0);
// act
var evObj = document.createEvent('HTMLEvents');
evObj.initEvent('mouseup', true, true);
tf.dom().rows[0].cells[2].dispatchEvent(evObj);
// assert
deepEqual(popupFilter.isOpen(0), false,
'Pop-up filter closed after user clicks away'
);
});
test('Can close all popup filters', function() {
// setup
popupFilter.open(0);
// act
popupFilter.closeAll();
// assert
deepEqual(popupFilter.isOpen(0), false,
'Pop-up filter closed after closeAll'
);
});
module('Tear-down');
test('TableFilter removed', function() {
tf.destroy();
var fltIcn1 = popupFilter.fltIcons[3];
deepEqual(fltIcn1, undefined, 'Filter icon is removed');
deepEqual(tf.isInitialized(), false, 'Filters removed');
});