mirror of
https://github.com/koalyptus/TableFilter.git
synced 2024-06-20 14:45:15 +02:00
163 lines
4.5 KiB
JavaScript
163 lines
4.5 KiB
JavaScript
(function(win, TableFilter) {
|
|
|
|
var tf = new TableFilter('demo', {
|
|
base_path: '../dist/tablefilter/'
|
|
});
|
|
tf.init();
|
|
|
|
module('Table 1: sanity checks');
|
|
test('TableFilter object', function() {
|
|
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
|
deepEqual(tf.id, 'demo', 'id check');
|
|
deepEqual(tf.filtersRowIndex, 0, 'Filters row index');
|
|
deepEqual(tf.getCellsNb(), 5, 'filters type collection length');
|
|
});
|
|
|
|
module('Table 1: DOM tests');
|
|
test('Filters row', function() {
|
|
equal(
|
|
tf.dom().rows[0].className,
|
|
'fltrow',
|
|
'Filters row CSS class name'
|
|
);
|
|
equal(tf.getFilterElement(0).nodeName, 'INPUT', 'Filter DOM element');
|
|
deepEqual(
|
|
tf.dom().scrollWidth === tf.dom().clientWidth,
|
|
true,
|
|
'Horizontal scrollbar is not displayed'
|
|
);
|
|
});
|
|
|
|
var tf1 = new TableFilter(
|
|
document.querySelector('.test'),
|
|
{
|
|
base_path: '../dist/tablefilter/',
|
|
responsive: true,
|
|
filters_row_index: 1,
|
|
btn: true
|
|
}
|
|
);
|
|
tf1.init();
|
|
|
|
var btn = document.querySelector('.' + tf1.btnCssClass);
|
|
|
|
module('Table 2: sanity checks');
|
|
test('TableFilter instance', function() {
|
|
notEqual(tf1.id, null, 'id check');
|
|
deepEqual(tf1.dom().classList.contains(tf1.prfxResponsive), true,
|
|
'Responsive CSS class');
|
|
equal(tf1.filtersRowIndex, 1, 'Filters row index');
|
|
deepEqual(tf1.getCellsNb(), 5, 'filters type collection length');
|
|
});
|
|
|
|
module('Table 2: DOM tests');
|
|
test('Filters row', function() {
|
|
equal(
|
|
tf1.dom().rows[1].className,
|
|
'fltrow',
|
|
'Filters row CSS class name'
|
|
);
|
|
equal(tf1.getFilterElement(0).nodeName, 'INPUT', 'Filter DOM element');
|
|
deepEqual(
|
|
tf1.dom().scrollWidth > tf1.dom().clientWidth,
|
|
true,
|
|
'Horizontal scrollbar is displayed'
|
|
);
|
|
});
|
|
test('Filter button', function(){
|
|
notEqual(btn, null, 'Button exists');
|
|
deepEqual(btn.nodeName, 'INPUT', 'Expected element');
|
|
});
|
|
test('Filter button click event', function(){
|
|
tf1.setFilterValue(4, '>30');
|
|
btn.click();
|
|
deepEqual(tf1.getValidRows().length, 2, 'Filter button event result');
|
|
});
|
|
|
|
test('Cannot init if initialised', function() {
|
|
// setup
|
|
var importFile = tf1.import;
|
|
var hit = 0;
|
|
tf1.import = function() { hit++; };
|
|
tf1.initialized = true;
|
|
|
|
// act
|
|
tf1.init();
|
|
|
|
// assert
|
|
deepEqual(hit, 0, 'import not called');
|
|
|
|
tf1.import = importFile;
|
|
});
|
|
|
|
test('Disable icons', function() {
|
|
// setup
|
|
tf1.destroy();
|
|
tf1 = new TableFilter(
|
|
document.querySelector('.test'),
|
|
{
|
|
base_path: '../dist/tablefilter/',
|
|
btn: true,
|
|
enable_icons: false
|
|
}
|
|
);
|
|
|
|
// act
|
|
tf1.init();
|
|
|
|
// assert
|
|
deepEqual(
|
|
document.querySelector('.' + tf1.btnCssClass).value,
|
|
'Go',
|
|
'Filter button text'
|
|
);
|
|
});
|
|
|
|
test('Defaults to flt_css_class if no filter class defined', function() {
|
|
// setup
|
|
tf1.destroy();
|
|
tf1 = new TableFilter(
|
|
document.querySelector('.test'),
|
|
{
|
|
base_path: '../dist/tablefilter/',
|
|
btn: true
|
|
}
|
|
);
|
|
|
|
// act
|
|
tf1.fltSmallCssClass = null;
|
|
tf1.init();
|
|
|
|
// assert
|
|
deepEqual(
|
|
tf1.getFilterElement(4).className,
|
|
'flt',
|
|
'Default css class for filter'
|
|
);
|
|
});
|
|
|
|
module('Tear-down');
|
|
test('can destroy TableFilter DOM elements', function() {
|
|
tf.destroy();
|
|
tf1.destroy();
|
|
|
|
deepEqual(tf.isInitialized(), false, 'Instance no longer initialised');
|
|
deepEqual(tf1.getFilterElement(0), null, 'Filter 0 removed');
|
|
});
|
|
|
|
module('Edge cases');
|
|
test('throws when no working DOM element', function() {
|
|
throws(
|
|
function() { new TableFilter('xyz'); },
|
|
Error,
|
|
'Throws Error when no DOM table'
|
|
);
|
|
});
|
|
test('Can instantiate with wrong refRow', function() {
|
|
var tf2 = new TableFilter('demo', -9);
|
|
tf2.init();
|
|
deepEqual(tf2.nbCells, 0, 'Expected number of columns');
|
|
});
|
|
|
|
})(window, TableFilter);
|