UNPKG

8.7 kBJavaScriptView Raw
1(function(win, TableFilter){
2
3 var tf = new TableFilter('demo', {
4 base_path: '../dist/tablefilter/'
5 });
6 tf.init();
7
8 module('Sanity checks');
9 test('Filters', function() {
10 deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
11 notEqual(tf.getFilterElement(0), null, 'Filter generated');
12 });
13
14 module('Operators');
15 test('Regex operator - rgx:', function() {
16 tf.setFilterValue(3, 'rgx:[4-5]');
17 tf.filter();
18 var filteredData = tf.getFilteredData();
19 deepEqual(tf.getValidRows().length, 3, 'Expected number of matches');
20 deepEqual(
21 filteredData[1],
22 [3, ['Sydney', 'Brisbane', '982', '1.5', '16']],
23 'Expected row data'
24 );
25 });
26
27 test('Regex operator - rgx:b.*e', function() {
28 tf.clearFilters();
29 tf.setFilterValue(1, 'rgx:b.*e');
30 tf.filter();
31 var filteredData = tf.getFilteredData();
32 deepEqual(tf.getValidRows().length, 4, 'Expected number of matches');
33 deepEqual(
34 filteredData[3],
35 [8, ['Adelaide', 'Brisbane', '2045', '2.15', '40']],
36 'Expected row data'
37 );
38 });
39
40 test('Regex operator - rgx:b.+e', function() {
41 tf.clearFilters();
42 tf.setFilterValue(1, 'rgx:b.+e');
43 tf.filter();
44 var filteredData = tf.getFilteredData();
45 deepEqual(tf.getValidRows().length, 3, 'Expected number of matches');
46 deepEqual(
47 filteredData[2],
48 [8, ['Adelaide', 'Brisbane', '2045', '2.15', '40']],
49 'Expected row data'
50 );
51 });
52
53 test('Empty operator - [empty]', function() {
54 var cell = tf.getWorkingRows()[4].cells[4];
55 cell.innerHTML = '';
56 tf.clearFilters();
57 tf.setFilterValue(4, '[empty]');
58 tf.filter();
59 var filteredData = tf.getFilteredData();
60
61 deepEqual(tf.getValidRows().length, 1, 'Expected number of matches');
62 deepEqual(
63 filteredData[0],
64 [6, ['Adelaide', 'Perth', '2781', '3.1', '']],
65 'Expected row data'
66 );
67 });
68
69 test('Empty operator - with cell containing dom element', function() {
70 var cell = tf.getWorkingRows()[4].cells[4];
71 cell.innerHTML = '<img>';
72 tf.clearFilters();
73 tf.setFilterValue(4, '[empty]');
74 tf.filter();
75 deepEqual(tf.getValidRows().length, 0, 'No matches expected');
76 });
77
78 test('Non-empty operator - [nonempty]', function() {
79 var cell = tf.getWorkingRows()[4].cells[4];
80 cell.innerHTML = '';
81 tf.clearFilters();
82 tf.setFilterValue(4, '[nonempty]');
83 tf.filter();
84 var filteredData = tf.getFilteredData();
85 deepEqual(tf.getValidRows().length, 6, 'Expected number of matches');
86 deepEqual(
87 filteredData[5],
88 [8, ['Adelaide', 'Brisbane', '2045', '2.15', '40']],
89 'Expected row data');
90 });
91
92 test('Non-empty operator - with cell containing dom element', function() {
93 var cell = tf.getWorkingRows()[4].cells[4];
94 cell.innerHTML = '<img>';
95 tf.clearFilters();
96 tf.setFilterValue(4, '[nonempty]');
97 tf.filter();
98
99 deepEqual(tf.getValidRows().length, 7, 'Expected number of matches');
100 });
101
102 test('Or operator - ||', function() {
103 tf.clearFilters();
104 tf.setFilterValue(1, 'Canberra||Alice Springs');
105 tf.filter();
106 var filteredData = tf.getFilteredData();
107 deepEqual(tf.getValidRows().length, 2, 'Expected number of matches');
108 deepEqual(
109 filteredData[1],
110 [7, ['Adelaide', 'Alice Springs', '1533', '2', '20.25']],
111 'Expected row data'
112 );
113 });
114
115 test('And operator - &&', function() {
116 tf.clearFilters();
117 tf.setFilterValue(1, 'Al&&Spr');
118 tf.filter();
119 var filteredData = tf.getFilteredData();
120 deepEqual(tf.getValidRows().length, 1, 'Expected number of matches');
121 deepEqual(
122 filteredData[0],
123 [7, ['Adelaide', 'Alice Springs', '1533', '2', '20.25']],
124 'Expected row data'
125 );
126 });
127
128 test('Greater than operator - >', function() {
129 tf.clearFilters();
130 tf.setFilterValue(2, '>1600');
131 tf.filter();
132 var filteredData = tf.getFilteredData();
133 deepEqual(tf.getValidRows().length, 2, 'Expected number of matches');
134 deepEqual(
135 filteredData[1],
136 [8, ['Adelaide', 'Brisbane', '2045', '2.15', '40']],
137 'Expected row data'
138 );
139 });
140
141 test('Lower than operator - <', function() {
142 tf.clearFilters();
143 tf.setFilterValue(3, '<1.5');
144 tf.filter();
145 var filteredData = tf.getFilteredData();
146 deepEqual(tf.getValidRows().length, 3, 'Expected number of matches');
147 deepEqual(
148 filteredData[2],
149 [5, ['Sydney', 'Melbourne', '872', '1.1', '10.5']],
150 'Expected row data'
151 );
152 });
153
154 test('Greater than or equal to operator - >=', function() {
155 tf.clearFilters();
156 tf.setFilterValue(2, '>=2781');
157 tf.filter();
158 var filteredData = tf.getFilteredData();
159 deepEqual(tf.getValidRows().length, 1, 'Expected number of matches');
160 deepEqual(
161 filteredData[0],
162 [6, ['Adelaide', 'Perth', '2781', '3.1', '']],
163 'Expected row data'
164 );
165 });
166
167 test('Lower than or equal to operator - <=', function() {
168 tf.clearFilters();
169 tf.setFilterValue(3, '<=0.6');
170 tf.filter();
171 var filteredData = tf.getFilteredData();
172 deepEqual(tf.getValidRows().length, 1, 'Expected number of matches');
173 deepEqual(
174 filteredData[0],
175 [4, ['Sydney', 'Canberra', '286', '.6', '4.3']],
176 'Expected row data'
177 );
178 });
179
180 test('Different from operator - !', function() {
181 tf.clearFilters();
182 tf.setFilterValue(0, '!Sydney');
183 tf.filter();
184 var filteredData = tf.getFilteredData();
185 deepEqual(tf.getValidRows().length, 3, 'Expected number of matches');
186 deepEqual(
187 filteredData[2],
188 [8, ['Adelaide', 'Brisbane', '2045', '2.15', '40']],
189 'Expected row data'
190 );
191 });
192
193 test('Like operator - *', function() {
194 tf.clearFilters();
195 tf.setFilterValue(1, '*our');
196 tf.filter();
197 var filteredData = tf.getFilteredData();
198 deepEqual(tf.getValidRows().length, 1, 'Expected number of matches');
199 deepEqual(
200 filteredData[0],
201 [5, ['Sydney', 'Melbourne', '872', '1.1', '10.5']],
202 'Expected row data'
203 );
204 });
205
206 test('Equal operator - =', function() {
207 tf.clearFilters();
208 tf.setFilterValue(1, '=Pe');
209 tf.filter();
210 deepEqual(tf.getValidRows().length, 0, 'Expected number of matches');
211
212 tf.clearFilters();
213 tf.setFilterValue(1, '=Perth');
214 tf.filter();
215 var filteredData = tf.getFilteredData();
216 deepEqual(tf.getValidRows().length, 1, 'Expected number of matches');
217 deepEqual(
218 filteredData[0],
219 [6, ['Adelaide', 'Perth', '2781', '3.1', '']],
220 'Expected row data'
221 );
222 });
223
224 test('Starts with - {', function() {
225 tf.clearFilters();
226 tf.setFilterValue(1, '{a');
227 tf.filter();
228 var filteredData = tf.getFilteredData();
229 deepEqual(tf.getValidRows().length, 2, 'Expected number of matches');
230 deepEqual(
231 filteredData[0],
232 [2, ['Sydney', 'Adelaide', '1412', '1.4', '25.3']],
233 'Expected row data'
234 );
235 });
236
237 test('Ends with - }', function() {
238 tf.clearFilters();
239 tf.setFilterValue(1, '}e');
240 tf.filter();
241 var filteredData = tf.getFilteredData();
242 deepEqual(tf.getValidRows().length, 4, 'Expected number of matches');
243 deepEqual(
244 filteredData[0],
245 [2, ['Sydney', 'Adelaide', '1412', '1.4', '25.3']],
246 'Expected row data'
247 );
248 });
249
250 module('Tear-down');
251 test('can destroy TableFilter DOM elements', function() {
252 tf.clearFilters();
253 tf.destroy();
254 deepEqual(tf.isInitialized(), false, 'Filters removed');
255 });
256
257})(window, TableFilter);