1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-05-04 15:43:15 +02:00
TableFilter/test/test-checklist.js

136 lines
3.7 KiB
JavaScript

var id = function (id){ return document.getElementById(id); };
var tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
col_3: 'checklist',
load_filters_on_demand: false
});
tf.init();
var checkList = tf.feature('checkList');
module('Sanity checks');
test('CheckList component', function() {
deepEqual(typeof checkList, 'object', 'CheckList instanciated');
deepEqual(checkList.containers instanceof Array, true,
'Type of containers property');
});
module('UI elements');
test('CheckList UI elements', function() {
var flt = id(tf.fltIds[3]);
notEqual(flt, null, 'CheckList UL element');
deepEqual(flt.firstChild.nodeName, 'LI',
'First CheckList option element name');
deepEqual(flt.childNodes.length, 8, 'number of checklist options');
});
module('Behaviour');
test('Can filter on checkList change', function() {
var flt1 = id(tf.fltIds[3]);
var evObj = document.createEvent('HTMLEvents');
evObj.initEvent('change', true, true);
tf.setFilterValue(3, '1.1');
flt1.dispatchEvent(evObj);
deepEqual(tf.getValidRows().length, 1, 'Table filtered');
deepEqual(tf.getFilteredData()[0][1][3], '1.1', 'Matched value');
});
test('Can select options', function() {
tf.clearFilters();
var flt1 = id(tf.fltIds[3]);
checkList.selectOptions(3, ['1.4', '.6']);
notEqual(flt1.getAttribute('value').indexOf('1.4'), -1, 'Option selected');
notEqual(flt1.getAttribute('value').indexOf('.6'), -1, 'Option selected');
});
test('Can get selected values', function() {
//setup
var values = ['.6', '1.4'];
tf.clearFilters();
tf.setFilterValue(3, values);
//act
var result = checkList.getValues(3);
//assert
deepEqual(values, result);
});
test('Can return values when no selected options', function() {
//setup
tf.clearFilters();
//act
var result = checkList.getValues(3);
//assert
deepEqual([''], result);
});
test('Can return values checklist element has no value attribute', function() {
//setup
tf.getFilterElement(3).removeAttribute('value');
//act
var result = checkList.getValues(3);
//assert
deepEqual([''], result);
});
// Issue 113, addressing option sorting for numeric values
module('Options sorting');
test('Can sort options', function() {
tf.clearFilters();
tf.destroy();
tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
col_2: 'checklist',
col_3: 'checklist',
col_4: 'checklist',
sort_num_asc: [2, 3],
sort_num_desc: [4]
});
tf.init();
var flt2 = id(tf.fltIds[2]);
var flt3 = id(tf.fltIds[3]);
var flt4 = id(tf.fltIds[4]);
deepEqual(
flt2.getElementsByTagName('li')[1].firstChild.firstChild.value,
'286',
'First option value for column 2'
);
deepEqual(
flt2.getElementsByTagName('li')[7].firstChild.firstChild.value,
'2781',
'Last option value for column 2'
);
deepEqual(
flt3.getElementsByTagName('li')[1].firstChild.firstChild.value,
'.6',
'First option value for column 3'
);
deepEqual(
flt3.getElementsByTagName('li')[7].firstChild.firstChild.value,
'3.1',
'Last option value for column 3'
);
deepEqual(
flt4.getElementsByTagName('li')[1].firstChild.firstChild.value,
'40',
'First option value for column 4'
);
deepEqual(
flt4.getElementsByTagName('li')[7].firstChild.firstChild.value,
'4.3',
'Last option value for column 4'
);
});
test('TableFilter removed', function() {
tf.destroy();
deepEqual(id(tf.fltIds[3]), null, 'CheckList UL element');
});