UNPKG

9.24 kBJavaScriptView Raw
1
2var tf = new TableFilter('demo', {
3 base_path: '../dist/tablefilter/',
4 paging: {
5 length: 2,
6 results_per_page: ['Results per page ', [2, 4, 6]]
7 }
8});
9tf.init();
10
11var paging = tf.feature('paging');
12module('Sanity checks');
13test('Paging component', function() {
14 notEqual(paging, null, 'Paging instanciated');
15 deepEqual(paging.pageLength, 2, 'Paging length');
16 deepEqual(paging.nbPages, 4, 'Number of pages');
17});
18module('Feature interface');
19test('Properties', function() {
20 deepEqual(
21 paging.tf instanceof TableFilter, true, 'TableFilter instance');
22 deepEqual(paging.feature, 'paging', 'Feature name');
23 deepEqual(paging.enabled, true, 'Feature enabled');
24 deepEqual(paging.initialized, true, 'Feature enabled');
25 deepEqual(typeof paging.emitter, 'object', 'Feature has emitter instance');
26 deepEqual(typeof paging.config, 'object', 'TF configuration object');
27 deepEqual(typeof paging.init, 'function', 'Feature init method');
28 deepEqual(typeof paging.destroy, 'function', 'Feature destroy method');
29 deepEqual(typeof paging.reset, 'function', 'Feature reset method');
30 deepEqual(typeof paging.enable, 'function', 'Feature enable method');
31 deepEqual(typeof paging.disable, 'function', 'Feature enable method');
32 deepEqual(
33 typeof paging.isEnabled, 'function', 'Feature enable method');
34});
35test('Can destroy', function() {
36 paging.destroy();
37 deepEqual(paging.initialized, false, 'not initialized');
38});
39test('Can reset', function() {
40 paging.reset();
41 deepEqual(paging.enabled, true, 'enabled');
42});
43test('Can disable', function() {
44 paging.disable();
45 deepEqual(paging.enabled, false, 'disabled');
46});
47test('Can enable', function() {
48 paging.enable();
49 deepEqual(paging.enabled, true, 'enabled');
50});
51test('Can init', function() {
52 paging.destroy();
53 paging.enable();
54 paging.init();
55 deepEqual(paging.enabled, true, 'enabled');
56});
57test('Can check is enabled', function() {
58 paging.isEnabled();
59 deepEqual(paging.enabled, true, 'enabled');
60});
61
62module('UI elements');
63test('Paging UI elements', function() {
64 notEqual(paging.pageSlc, null, 'Paging drop-down element');
65 notEqual(paging.pageLengthSlc, null,
66 'Number of results per page drop-down element');
67 notEqual(paging.btnNextCont, null, 'Next button container element');
68 notEqual(paging.btnPrevCont, null, 'Previous button container element');
69 notEqual(paging.btnLastCont, null, 'Last button container element');
70 notEqual(paging.btnFirstCont, null, 'First button container element');
71});
72
73test('Destroy Paging component', function() {
74 paging.destroy();
75 deepEqual(paging.pageSlc, null, 'Paging drop-down element');
76 deepEqual(paging.pageLengthSlc, null, 'Paging drop-down element');
77 deepEqual(paging.btnNextCont, null, 'Next button container element');
78 deepEqual(paging.btnPrevCont, null, 'Previous button container element');
79 deepEqual(paging.btnLastCont, null, 'Last button container element');
80 deepEqual(paging.btnFirstCont, null, 'First button container element');
81 deepEqual(paging.nbPages, 0, 'Number of pages');
82});
83
84test('Reset Paging component', function() {
85 paging.reset();
86 paging.setPage(2);
87 notEqual(paging.pageSlc, null, 'Paging drop-down element');
88});
89
90module('Behaviour');
91test('Set page', function() {
92 paging.setPage(1);
93 deepEqual(paging.getPage(), 1, 'Expected page number');
94 paging.setPage(3);
95 deepEqual(paging.getPage(), 3, 'Expected page number');
96 deepEqual(paging.pageSlc.selectedIndex, 2,
97 'Expected page number in paging drop-down selector');
98});
99
100test('Can set page with command', function() {
101 // setup
102 paging.setPage(1);
103 // act
104 paging.setPage('next');
105 // assert
106 deepEqual(paging.getPage(), 2, 'Expected page number for `next`');
107
108 // act
109 paging.setPage('previous');
110 // assert
111 deepEqual(paging.getPage(), 1, 'Expected page number for `previous`');
112
113 // act
114 paging.setPage('last');
115 // assert
116 deepEqual(paging.getPage(), 4, 'Expected page number for `last`');
117
118 // act
119 paging.setPage('first');
120 // assert
121 deepEqual(paging.getPage(), 1, 'Expected page number for `first`');
122});
123
124test('Set page via drop-down page selector', function() {
125 paging.pageSlc.selectedIndex = 3;
126 paging.changePage(paging.pageSlc.selectedIndex);
127 deepEqual(paging.getPage(), 4, 'Expected page number');
128});
129
130test('Filter from non starting page', function() {
131 tf.setFilterValue(1, 'Melbourne');
132 tf.filter();
133 deepEqual(tf.validRowsIndex.length,
134 1, 'Expected valid rows after page change');
135 deepEqual(tf.getValidRowsNb(),
136 1, 'Expected visible rows after page change');
137});
138
139test('Filter with dummy value', function() {
140 tf.clearFilters();
141 tf.setFilterValue(0, 'dfsdf');
142 tf.filter();
143 deepEqual(tf.validRowsIndex.length, 0, 'Expected valid rows');
144});
145
146test('Set results per page', function() {
147 tf.clearFilters();
148 paging.changeResultsPerPage('4');
149 deepEqual(paging.pageLength, 4, 'Expected page length');
150 deepEqual(paging.nbPages, 2, 'Expected number of pages');
151 paging.changeResultsPerPage('6');
152 deepEqual(paging.pageLength, 6, 'Expected page length');
153 deepEqual(paging.nbPages, 2, 'Expected number of pages');
154});
155
156module('Grid layout');
157test('Grid layout with paging', function() {
158 tf.destroy();
159 tf = null;
160 tf = new TableFilter('demo', {
161 base_path: '../dist/tablefilter/',
162 grid_layout: true,
163 paging: {
164 length: 2,
165 results_per_page: ['Results per page ', [2, 4, 6]]
166 }
167 });
168 tf.init();
169
170 paging = tf.feature('paging');
171
172 notEqual(paging.pageSlc, null, 'Paging drop-down element');
173 notEqual(paging.pageLengthSlc, null,
174 'Number of results per page drop-down element');
175 notEqual(paging.btnNextCont, null, 'Next button container element');
176 notEqual(paging.btnPrevCont, null, 'Previous button container element');
177 notEqual(paging.btnLastCont, null, 'Last button container element');
178 notEqual(paging.btnFirstCont, null, 'First button container element');
179});
180
181module('Behaviour');
182test('Set page', function() {
183 paging.setPage(1);
184 deepEqual(paging.getPage(), 1, 'Expected page number');
185 paging.setPage(3);
186 deepEqual(paging.getPage(), 3, 'Expected page number');
187});
188
189test('Can set page with command', function() {
190 // setup
191 paging.setPage(1);
192 // act
193 paging.setPage('next');
194 // assert
195 deepEqual(paging.getPage(), 2, 'Expected page number for `next`');
196
197 // act
198 paging.setPage('previous');
199 // assert
200 deepEqual(paging.getPage(), 1, 'Expected page number for `previous`');
201
202 // act
203 paging.setPage('last');
204 // assert
205 deepEqual(paging.getPage(), 4, 'Expected page number for `last`');
206
207 // act
208 paging.setPage('first');
209 // assert
210 deepEqual(paging.getPage(), 1, 'Expected page number for `first`');
211});
212
213test('Set page via drop-down page selector', function() {
214 paging.pageSlc.selectedIndex = 3;
215 paging.changePage(paging.pageSlc.selectedIndex);
216 deepEqual(paging.getPage(), 4, 'Expected page number');
217});
218
219test('Filter from non starting page', function() {
220 tf.setFilterValue(1, 'Perth');
221 tf.filter();
222 deepEqual(tf.validRowsIndex.length,
223 1, 'Expected valid rows after page change');
224 deepEqual(tf.getValidRowsNb(),
225 1, 'Expected visible rows after page change');
226});
227
228test('Filter with dummy value', function() {
229 tf.clearFilters();
230 tf.setFilterValue(0, 'dfsdf');
231 tf.filter();
232 deepEqual(tf.validRowsIndex.length, 0, 'Expected valid rows');
233});
234
235test('Set results per page', function() {
236 tf.clearFilters();
237 paging.changeResultsPerPage('4');
238 deepEqual(paging.pageLength, 4, 'Expected page length');
239 deepEqual(paging.nbPages, 2, 'Expected number of pages');
240 paging.changeResultsPerPage('6');
241 deepEqual(paging.pageLength, 6, 'Expected page length');
242 deepEqual(paging.nbPages, 2, 'Expected number of pages');
243});
244
245// issue 424: cannot set results per page when no valid rows
246test('Set results per page when no valid rows', function() {
247 // setup
248 tf.clearFilters();
249 tf.setFilterValue(2, 'hello world');
250 tf.filter();
251
252 // act
253 paging.changeResultsPerPage('4');
254
255 // assert
256 deepEqual(paging.pageLengthSlc.value, '4', 'Select page length option');
257 deepEqual(paging.getPage(), 1, 'Expected page number');
258});
259
260module('Reset feature');
261test('can destroy and init TableFilter', function() {
262 tf.destroy();
263 tf.init();
264 notEqual(paging, null, 'Paging instanciated');
265 deepEqual(paging.pageLength, 2, 'Paging length');
266 deepEqual(paging.nbPages, 4, 'Number of pages');
267});
268
269module('Tear-down');
270test('can destroy TableFilter DOM elements', function() {
271 tf.destroy();
272 deepEqual(tf.isInitialized(), false, 'Filters removed');
273});