UNPKG

7.47 kBJavaScriptView Raw
1
2var id = function (id){ return document.getElementById(id); };
3
4var tf = new TableFilter('demo', {
5 base_path: '../dist/tablefilter/',
6 col_2: 'select',
7 col_3: 'multiple',
8 col_4: 'checklist',
9 /* external filters */
10 external_flt_ids: [
11 'extFrom',
12 'extDestination',
13 'extRoadDistance',
14 'extAirDistance',
15 'extRailDistance'
16 ]
17});
18tf.init();
19
20module('Sanity checks');
21test('External filters', function() {
22 deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
23 deepEqual(tf.isExternalFlt(), true, 'Has external filters');
24 deepEqual(tf.externalFltIds.length, 5,
25 'External filters ids length');
26 deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
27 deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
28 deepEqual(tf.getStartRowIndex(), 2, 'Reference row index');
29 deepEqual(id('extFrom').childNodes.length>0, true,
30 'Col0 filter is external');
31 deepEqual(id('extDestination').childNodes.length>0, true,
32 'Col1 filter is external');
33 deepEqual(id('extRoadDistance').childNodes.length>0, true,
34 'Col2 filter is external');
35 deepEqual(id('extAirDistance').childNodes.length>0, true,
36 'Col3 filter is external');
37 deepEqual(id('extRailDistance').childNodes.length>0, true,
38 'Col4 filter is external');
39});
40
41module('Filter columns');
42test('Can filter column 0', function() {
43 tf.setFilterValue(0, 'Syd');
44 tf.filter();
45 deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
46});
47test('Can filter column 1', function() {
48 tf.clearFilters();
49 tf.setFilterValue(1, 'Ade');
50 tf.filter();
51 deepEqual(tf.getValidRows(), [2], 'Filtered rows');
52});
53test('Can filter column 2', function() {
54 tf.clearFilters();
55 tf.setFilterValue(2, '1533');
56 tf.filter();
57 deepEqual(tf.getValidRows(), [7], 'Filtered rows');
58});
59test('Can filter column 3', function() {
60 tf.clearFilters();
61 tf.setFilterValue(3, ['2', '3.1', '1.5']);
62 tf.filter();
63 deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
64});
65test('Can filter column 4', function() {
66 tf.clearFilters();
67 tf.setFilterValue(4, ['16', '40']);
68 tf.filter();
69 deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
70});
71
72// Filters in grid-layout mode are already considered as `external` as
73// generated in headers container
74module('Grid-layout');
75test('Sanity checks', function() {
76 tf.clearFilters();
77 tf.destroy();
78 tf = new TableFilter('demo', {
79 base_path: '../dist/tablefilter/',
80 col_2: 'select',
81 col_3: 'multiple',
82 col_4: 'checklist',
83 /* external filters */
84 external_flt_ids: [
85 'extFrom',
86 'extDestination',
87 'extRoadDistance',
88 'extAirDistance',
89 'extRailDistance'
90 ],
91 grid_layout: true
92 });
93 tf.init();
94
95 deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
96 deepEqual(tf.isExternalFlt(), true, 'Has external filters');
97 deepEqual(tf.externalFltIds.length, 5,
98 'External filters ids length');
99 deepEqual(tf.getFiltersRowIndex(), 1, 'Filters row index');
100 deepEqual(tf.getHeadersRowIndex(), 0, 'Headers row index');
101 deepEqual(tf.getStartRowIndex(), 0, 'Reference row index');
102 deepEqual(id('extFrom').childNodes.length, 0,
103 'Col0 filter is external');
104 deepEqual(id('extDestination').childNodes.length, 0,
105 'Col1 filter is external');
106 deepEqual(id('extRoadDistance').childNodes.length, 0,
107 'Col2 filter is external');
108 deepEqual(id('extAirDistance').childNodes.length, 0,
109 'Col3 filter is external');
110 deepEqual(id('extRailDistance').childNodes.length, 0,
111 'Col4 filter is external');
112});
113test('Can filter column 0', function() {
114 tf.setFilterValue(0, 'Syd');
115 tf.filter();
116 deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
117});
118test('Can filter column 1', function() {
119 tf.clearFilters();
120 tf.setFilterValue(1, 'Ade');
121 tf.filter();
122 deepEqual(tf.getValidRows(), [0], 'Filtered rows');
123});
124test('Can filter column 2', function() {
125 tf.clearFilters();
126 tf.setFilterValue(2, '1533');
127 tf.filter();
128 deepEqual(tf.getValidRows(), [5], 'Filtered rows');
129});
130test('Can filter column 3', function() {
131 tf.clearFilters();
132 tf.setFilterValue(3, ['2', '3.1', '1.5']);
133 tf.filter();
134 deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
135});
136test('Can filter column 4', function() {
137 tf.clearFilters();
138 tf.setFilterValue(4, ['16', '40']);
139 tf.filter();
140 deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
141});
142
143// In popup filters mode are already considered as `external` as
144// generated in headers container
145module('Pop-up filters');
146test('Sanity checks', function() {
147 tf.clearFilters();
148 tf.destroy();
149 tf = new TableFilter('demo', {
150 base_path: '../dist/tablefilter/',
151 col_2: 'select',
152 col_3: 'multiple',
153 col_4: 'checklist',
154 /* external filters */
155 external_flt_ids: [
156 'extFrom',
157 'extDestination',
158 'extRoadDistance',
159 'extAirDistance',
160 'extRailDistance'
161 ],
162 popup_filters: true
163 });
164 tf.init();
165
166 deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
167 deepEqual(tf.isExternalFlt(), true, 'Has external filters');
168 deepEqual(tf.externalFltIds.length, 5,
169 'External filters ids length');
170 deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
171 deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
172 deepEqual(tf.getStartRowIndex(), 2, 'Reference row index');
173 deepEqual(id('extFrom').childNodes.length, 0,
174 'Col0 filter is external');
175 deepEqual(id('extDestination').childNodes.length, 0,
176 'Col1 filter is external');
177 deepEqual(id('extRoadDistance').childNodes.length, 0,
178 'Col2 filter is external');
179 deepEqual(id('extAirDistance').childNodes.length, 0,
180 'Col3 filter is external');
181 deepEqual(id('extRailDistance').childNodes.length, 0,
182 'Col4 filter is external');
183});
184test('Can filter column 0', function() {
185 tf.setFilterValue(0, 'Syd');
186 tf.filter();
187 deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
188});
189test('Can filter column 1', function() {
190 tf.clearFilters();
191 tf.setFilterValue(1, 'Ade');
192 tf.filter();
193 deepEqual(tf.getValidRows(), [2], 'Filtered rows');
194});
195test('Can filter column 2', function() {
196 tf.clearFilters();
197 tf.setFilterValue(2, '1533');
198 tf.filter();
199 deepEqual(tf.getValidRows(), [7], 'Filtered rows');
200});
201test('Can filter column 3', function() {
202 tf.clearFilters();
203 tf.setFilterValue(3, ['2', '3.1', '1.5']);
204 tf.filter();
205 deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
206});
207test('Can filter column 4', function() {
208 tf.clearFilters();
209 tf.setFilterValue(4, ['16', '40']);
210 tf.filter();
211 deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
212});
213
214module('Tear-down');
215test('TableFilter removed', function() {
216 tf.clearFilters();
217 tf.destroy();
218 deepEqual(tf.isInitialized(), false, 'Filters removed');
219});