1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-04-26 12:10:45 +02:00
TableFilter/test/test-external-filters.js
2017-12-17 22:02:56 +11:00

220 lines
7.1 KiB
JavaScript

var id = function (id){ return document.getElementById(id); };
var tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
col_2: 'select',
col_3: 'multiple',
col_4: 'checklist',
/* external filters */
external_flt_ids: [
'extFrom',
'extDestination',
'extRoadDistance',
'extAirDistance',
'extRailDistance'
]
});
tf.init();
module('Sanity checks');
test('External filters', function() {
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
deepEqual(tf.isExternalFlt(), true, 'Has external filters');
deepEqual(tf.externalFltIds.length, 5,
'External filters ids length');
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
deepEqual(tf.getStartRowIndex(), 2, 'Reference row index');
deepEqual(id('extFrom').childNodes.length>0, true,
'Col0 filter is external');
deepEqual(id('extDestination').childNodes.length>0, true,
'Col1 filter is external');
deepEqual(id('extRoadDistance').childNodes.length>0, true,
'Col2 filter is external');
deepEqual(id('extAirDistance').childNodes.length>0, true,
'Col3 filter is external');
deepEqual(id('extRailDistance').childNodes.length>0, true,
'Col4 filter is external');
});
module('Filter columns');
test('Can filter column 0', function() {
tf.setFilterValue(0, 'Syd');
tf.filter();
deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
});
test('Can filter column 1', function() {
tf.clearFilters();
tf.setFilterValue(1, 'Ade');
tf.filter();
deepEqual(tf.getValidRows(), [2], 'Filtered rows');
});
test('Can filter column 2', function() {
tf.clearFilters();
tf.setFilterValue(2, '1533');
tf.filter();
deepEqual(tf.getValidRows(), [7], 'Filtered rows');
});
test('Can filter column 3', function() {
tf.clearFilters();
tf.setFilterValue(3, ['2', '3.1', '1.5']);
tf.filter();
deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
});
test('Can filter column 4', function() {
tf.clearFilters();
tf.setFilterValue(4, ['16', '40']);
tf.filter();
deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
});
// Filters in grid-layout mode are already considered as `external` as
// generated in headers container
module('Grid-layout');
test('Sanity checks', function() {
tf.clearFilters();
tf.destroy();
tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
col_2: 'select',
col_3: 'multiple',
col_4: 'checklist',
/* external filters */
external_flt_ids: [
'extFrom',
'extDestination',
'extRoadDistance',
'extAirDistance',
'extRailDistance'
],
grid_layout: true
});
tf.init();
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
deepEqual(tf.isExternalFlt(), true, 'Has external filters');
deepEqual(tf.externalFltIds.length, 5,
'External filters ids length');
deepEqual(tf.getFiltersRowIndex(), 1, 'Filters row index');
deepEqual(tf.getHeadersRowIndex(), 0, 'Headers row index');
deepEqual(tf.getStartRowIndex(), 0, 'Reference row index');
deepEqual(id('extFrom').childNodes.length, 0,
'Col0 filter is external');
deepEqual(id('extDestination').childNodes.length, 0,
'Col1 filter is external');
deepEqual(id('extRoadDistance').childNodes.length, 0,
'Col2 filter is external');
deepEqual(id('extAirDistance').childNodes.length, 0,
'Col3 filter is external');
deepEqual(id('extRailDistance').childNodes.length, 0,
'Col4 filter is external');
});
test('Can filter column 0', function() {
tf.setFilterValue(0, 'Syd');
tf.filter();
deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
});
test('Can filter column 1', function() {
tf.clearFilters();
tf.setFilterValue(1, 'Ade');
tf.filter();
deepEqual(tf.getValidRows(), [0], 'Filtered rows');
});
test('Can filter column 2', function() {
tf.clearFilters();
tf.setFilterValue(2, '1533');
tf.filter();
deepEqual(tf.getValidRows(), [5], 'Filtered rows');
});
test('Can filter column 3', function() {
tf.clearFilters();
tf.setFilterValue(3, ['2', '3.1', '1.5']);
tf.filter();
deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
});
test('Can filter column 4', function() {
tf.clearFilters();
tf.setFilterValue(4, ['16', '40']);
tf.filter();
deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
});
// In popup filters mode are already considered as `external` as
// generated in headers container
module('Pop-up filters');
test('Sanity checks', function() {
tf.clearFilters();
tf.destroy();
tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
col_2: 'select',
col_3: 'multiple',
col_4: 'checklist',
/* external filters */
external_flt_ids: [
'extFrom',
'extDestination',
'extRoadDistance',
'extAirDistance',
'extRailDistance'
],
popup_filters: true
});
tf.init();
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
deepEqual(tf.isExternalFlt(), true, 'Has external filters');
deepEqual(tf.externalFltIds.length, 5,
'External filters ids length');
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
deepEqual(tf.getStartRowIndex(), 2, 'Reference row index');
deepEqual(id('extFrom').childNodes.length, 0,
'Col0 filter is external');
deepEqual(id('extDestination').childNodes.length, 0,
'Col1 filter is external');
deepEqual(id('extRoadDistance').childNodes.length, 0,
'Col2 filter is external');
deepEqual(id('extAirDistance').childNodes.length, 0,
'Col3 filter is external');
deepEqual(id('extRailDistance').childNodes.length, 0,
'Col4 filter is external');
});
test('Can filter column 0', function() {
tf.setFilterValue(0, 'Syd');
tf.filter();
deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
});
test('Can filter column 1', function() {
tf.clearFilters();
tf.setFilterValue(1, 'Ade');
tf.filter();
deepEqual(tf.getValidRows(), [2], 'Filtered rows');
});
test('Can filter column 2', function() {
tf.clearFilters();
tf.setFilterValue(2, '1533');
tf.filter();
deepEqual(tf.getValidRows(), [7], 'Filtered rows');
});
test('Can filter column 3', function() {
tf.clearFilters();
tf.setFilterValue(3, ['2', '3.1', '1.5']);
tf.filter();
deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
});
test('Can filter column 4', function() {
tf.clearFilters();
tf.setFilterValue(4, ['16', '40']);
tf.filter();
deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
});
module('Tear-down');
test('TableFilter removed', function() {
tf.clearFilters();
tf.destroy();
deepEqual(tf.isInitialized(), false, 'Filters removed');
});