UNPKG

4.43 kBJavaScriptView Raw
1
2var id = function (id){ return document.getElementById(id); };
3
4var tf = new TableFilter('demo', {
5 base_path: '../dist/tablefilter/',
6 col_0: 'multiple',
7 col_1: 'select',
8 col_2: 'checklist',
9 load_filters_on_demand: true
10});
11tf.init();
12
13var flt1 = tf.getFilterElement(0);
14var flt2 = tf.getFilterElement(1);
15var flt3 = null;
16var flt3ContId = tf.feature('checkList').prfx + '2_' + tf.id;
17var flt3Cont = id(flt3ContId);
18
19function buildChecklist(tf, colIdx){
20 var checkList = tf.feature('checkList');
21 checkList.build(colIdx);
22 checkList.containers[colIdx].onclick = null;
23 checkList.containers[colIdx].title = '';
24}
25
26
27module('Sanity checks');
28test('Select type filters exist', function() {
29 deepEqual(tf.loadFltOnDemand, true, 'loadFltOnDemand property');
30 notEqual(flt1, null, 'Filter 1 element exists');
31 notEqual(flt2, null, 'Filter 2 element exists');
32 deepEqual(flt3, null, 'Filter 3 element exists');
33 deepEqual(tf.getFilterType(0), 'multiple', 'Expected filter type 1');
34 deepEqual(tf.getFilterType(1), 'select', 'Expected filter type 2');
35 deepEqual(tf.getFilterType(2), 'checklist', 'Expected filter type 3');
36});
37
38module('UI Filter elements');
39test('Filters are empty', function() {
40 deepEqual(flt1.options.length, 1, 'Number of options for filter 1');
41 deepEqual(flt2.options.length, 1, 'Number of options for filter 2');
42 deepEqual(flt1.options[0].text, 'Clear', 'Filter 1 text');
43 deepEqual(flt2.options[0].text, 'Clear', 'Filter 2 text');
44 deepEqual(flt3Cont.innerHTML, 'Click to load filter data', 'Filter 3 text');
45});
46
47test('Filters are populated after activation', function() {
48 flt1.focus();
49 flt2.focus();
50 buildChecklist(tf, 2);
51
52 flt3 = tf.getFilterElement(2);
53
54 deepEqual(flt1.options.length, 3, 'Number of options for filter 1');
55 deepEqual(flt2.options.length, 7, 'Number of options for filter 2');
56 deepEqual(flt3.childNodes.length, 8, 'Number of options for filter 3');
57});
58
59test('TableFilter re-initialised with grid layout', function() {
60 tf.destroy();
61 deepEqual(tf.isInitialized(), false, 'Filters removed');
62 tf = null;
63 tf = new TableFilter('demo', {
64 base_path: '../dist/tablefilter/',
65 col_0: 'multiple',
66 col_1: 'select',
67 col_2: 'checklist',
68 load_filters_on_demand: true,
69 grid_layout: true
70 });
71 tf.init();
72
73 flt1 = tf.getFilterElement(0);
74 flt2 = tf.getFilterElement(1);
75 flt3 = null;
76 flt3ContId = tf.feature('checkList').prfx + '2_' + tf.id;
77 flt3Cont = id(flt3ContId);
78});
79
80module('Behaviour with grid layout');
81test('Selet type filters exist', function() {
82 deepEqual(tf.loadFltOnDemand, true, 'loadFltOnDemand property');
83 notEqual(flt1, null, 'Filter 1 element exists');
84 notEqual(flt2, null, 'Filter 2 element exists');
85 deepEqual(flt3, null, 'Filter 3 element exists');
86 deepEqual(tf.getFilterType(0), 'multiple', 'Expected filter type 1');
87 deepEqual(tf.getFilterType(1), 'select', 'Expected filter type 2');
88 deepEqual(tf.getFilterType(2), 'checklist', 'Expected filter type 3');
89});
90
91module('UI Filter elements');
92test('Filters are empty', function() {
93 deepEqual(flt1.options.length, 1, 'Number of options for filter 1');
94 deepEqual(flt2.options.length, 1, 'Number of options for filter 2');
95 deepEqual(flt1.options[0].text, 'Clear', 'Filter 1 text');
96 deepEqual(flt2.options[0].text, 'Clear', 'Filter 2 text');
97 deepEqual(flt3Cont.innerHTML, 'Click to load filter data', 'Filter 3 text');
98});
99
100test('Filters are populated after activation', function() {
101 flt1.focus();
102 flt2.focus();
103 buildChecklist(tf, 2);
104 flt3 = tf.getFilterElement(2);
105
106 deepEqual(flt1.options.length, 3, 'Number of options for filter 1');
107 deepEqual(flt2.options.length, 7, 'Number of options for filter 2');
108 deepEqual(flt3.childNodes.length, 8, 'Number of options for filter 3');
109});
110
111test('Filters can filter table', function() {
112 tf.setFilterValue(0, 'Sydney');
113 tf.setFilterValue(1, 'Canberra');
114 tf.setFilterValue(2, '286');
115 tf.filter();
116
117 deepEqual(tf.getValidRows().length, 1, 'Number of results');
118});
119
120test('TableFilter removed', function() {
121 tf.destroy();
122 deepEqual(tf.isInitialized(), false, 'Filters removed');
123 tf = null;
124});