UNPKG

8.59 kBJavaScriptView Raw
1
2module('Sanity checks');
3test('No Results Feature', function() {
4 var tf = new TableFilter('demo0', {
5 base_path: '../dist/tablefilter/',
6 no_results_message: true
7 });
8 tf.init();
9 var noResults = tf.feature('noResults');
10
11 deepEqual(tf instanceof TableFilter, true, 'TableFilter instantiated');
12 notEqual(noResults, null, 'noResults instantiated');
13 deepEqual(tf.noResults, true, 'noResults property');
14
15 module('Feature interface');
16 test('Properties', function() {
17 deepEqual(noResults.tf instanceof TableFilter, true,
18 'TableFilter instance');
19 deepEqual(noResults.feature, 'noResults', 'Feature name');
20 deepEqual(noResults.enabled, true, 'Feature enabled');
21 deepEqual(noResults.initialized, true, 'Feature initialized');
22 deepEqual(typeof noResults.emitter, 'object',
23 'Feature has emitter instance');
24 deepEqual(typeof noResults.config, 'object', 'TF configuration object');
25 deepEqual(typeof noResults.init, 'function', 'Feature init method');
26 deepEqual(typeof noResults.destroy, 'function',
27 'Feature destroy method');
28 deepEqual(typeof noResults.reset, 'function', 'Feature reset method');
29 deepEqual(typeof noResults.enable, 'function', 'Feature enable method');
30 deepEqual(typeof noResults.disable, 'function',
31 'Feature enable method');
32 deepEqual(typeof noResults.isEnabled, 'function',
33 'Feature enable method');
34 });
35 test('Can destroy', function() {
36 noResults.destroy();
37 deepEqual(noResults.initialized, false, 'not initialised');
38 });
39 test('Can reset', function() {
40 noResults.reset();
41 deepEqual(noResults.enabled, true, 'enabled');
42 });
43 test('Can disable', function() {
44 noResults.disable();
45 deepEqual(noResults.enabled, false, 'disabled');
46 });
47 test('Can enable', function() {
48 noResults.enable();
49 deepEqual(noResults.enabled, true, 'enabled');
50 });
51 test('Can init', function() {
52 noResults.destroy();
53 noResults.enable();
54 noResults.init();
55 deepEqual(noResults.enabled, true, 'enabled');
56 });
57 test('Can check is enabled', function() {
58 noResults.isEnabled();
59 deepEqual(noResults.enabled, true, 'enabled');
60 });
61
62 module('Behaviour');
63 test('Can display no results message', function() {
64 tf.setFilterValue(0, 'sadasd');
65 tf.filter();
66 deepEqual(tf.getValidRows().length, 0, 'Filtered rows number');
67 deepEqual(noResults.cont.innerHTML, 'No results', 'No results message');
68 deepEqual(noResults.cont.style.display, 'block',
69 'No results message displayed');
70 });
71
72 test('Can hide no results message', function() {
73 tf.clearFilters();
74 deepEqual(tf.getValidRows().length, 7, 'Filtered rows number');
75 deepEqual(noResults.cont.innerHTML, 'No results', 'No results message');
76 deepEqual(noResults.cont.style.display, 'none', 'Message hidden');
77 });
78
79 test('can destroy TableFilter DOM elements', function() {
80 tf.destroy();
81 deepEqual(tf.isInitialized(), false, 'Filters removed');
82 tf = null;
83 });
84});
85
86module('Customisation');
87test('External container sanity checks', function() {
88 var tfCustom = new TableFilter('demo1', {
89 base_path: '../dist/tablefilter/',
90 no_results_message: {
91 custom_container: document.querySelector('#ext-cont'),
92 content: '<h3>No results found</h3>',
93 css_class: 'test'
94 }
95 });
96 tfCustom.init();
97 var noResultsCustom = tfCustom.feature('noResults');
98
99 deepEqual(tfCustom instanceof TableFilter, true,
100 'TableFilter instanciated');
101 notEqual(noResultsCustom, null, 'noResults instantiated');
102 deepEqual(tfCustom.noResults, true, 'noResults property');
103 deepEqual(noResultsCustom.cont.nodeName, 'DIV',
104 'external container element');
105 deepEqual(noResultsCustom.cont.className, 'test',
106 'external container element CSS class');
107
108 test('Can display external no results message', function() {
109 tfCustom.setFilterValue(0, 'sadasd');
110 tfCustom.filter();
111 deepEqual(noResultsCustom.cont.innerHTML, '<h3>No results found</h3>',
112 'No results message markup');
113 deepEqual(noResultsCustom.cont.style.display, 'block',
114 'No results message displayed');
115 });
116
117 test('Can hide external no results message', function() {
118 tfCustom.clearFilters();
119 deepEqual(tfCustom.getValidRows().length, 7, 'Filtered rows number');
120 deepEqual(noResultsCustom.cont.style.display, 'none', 'Message hidden');
121 });
122
123 test('can destroy TableFilter DOM elements', function() {
124 tfCustom.destroy();
125 deepEqual(tfCustom.isInitialized(), false, 'Filters removed');
126 tfCustom = null;
127 });
128});
129
130module('Integration with grid layout');
131test('Sanity checks', function() {
132 var tfGl = new TableFilter('demo2', {
133 base_path: '../dist/tablefilter/',
134 grid_layout: true,
135 no_results_message: true
136 });
137 tfGl.init();
138 var noResultsGl = tfGl.feature('noResults');
139 var gridLayout = tfGl.feature('gridLayout');
140
141 deepEqual(tfGl instanceof TableFilter, true, 'TableFilter instanciated');
142 notEqual(noResultsGl, null, 'noResults instantiated');
143 deepEqual(tfGl.noResults, true, 'noResults property');
144 deepEqual(noResultsGl.cont.nodeName, 'DIV', 'Container element');
145 deepEqual(noResultsGl.cont.className, 'no-results',
146 'Container element default CSS class');
147
148 test('Can display no results message in grid layout', function() {
149 tfGl.setFilterValue(0, 'sadasd');
150 tfGl.filter();
151 deepEqual(noResultsGl.cont.innerHTML, 'No results',
152 'No results message');
153 deepEqual(noResultsGl.cont.style.display, 'block',
154 'No results message displayed');
155 deepEqual(
156 parseInt(noResultsGl.cont.style.width, 10),
157 gridLayout.headTbl.clientWidth,
158 'Container element width'
159 );
160 });
161
162 test('Can hide no results message', function() {
163 tfGl.clearFilters();
164 deepEqual(noResultsGl.cont.style.display, 'none', 'Message hidden');
165 });
166
167 test('can destroy TableFilter DOM elements', function() {
168 tfGl.destroy();
169 deepEqual(tfGl.isInitialized(), false, 'Filters removed');
170 tfGl = null;
171 });
172});
173
174module('Callbacks');
175test('External container sanity checks', function() {
176 var tfCall = new TableFilter('demo3', {
177 base_path: '../dist/tablefilter/',
178 no_results_message: {
179 on_before_show_msg: function(tfCall, noResultsCall) {
180 callback(tfCall, noResultsCall, 'onBeforeShowMessage');
181 },
182 on_after_show_msg: function(tfCall, noResultsCall) {
183 callback(tfCall, noResultsCall, 'onAfterShowMessage');
184 },
185 on_before_hide_msg: function(tfCall, noResultsCall) {
186 callback(tfCall, noResultsCall, 'onBeforeHideMessage');
187 },
188 on_after_hide_msg: function(tfCall, noResultsCall) {
189 callback(tfCall, noResultsCall, 'onAfterHideMessage');
190 }
191 }
192 });
193 tfCall.init();
194 var noResultsCall = tfCall.feature('noResults');
195
196 deepEqual(tfCall instanceof TableFilter, true, 'TableFilter instanciated');
197 notEqual(noResultsCall, null, 'noResults instantiated');
198 deepEqual(tfCall.noResults, true, 'noResults property');
199 deepEqual(noResultsCall.cont.nodeName, 'DIV', 'container element');
200
201 tfCall.setFilterValue(0, 'sadasd');
202 tfCall.filter();
203
204 tfCall.setFilterValue(0, 'Sydney');
205 tfCall.filter();
206
207 function callback(tfCall, noResultsCall, type) {
208 module('Callbacks');
209 test(type, function() {
210 deepEqual(tfCall instanceof TableFilter, true,
211 'First argument type');
212 deepEqual(typeof noResultsCall.onBeforeShow, 'function',
213 'Second argument type');
214 });
215 }
216
217 test('can destroy TableFilter DOM elements', function() {
218 tfCall.destroy();
219 deepEqual(tfCall.isInitialized(), false, 'Filters removed');
220 tfCall = null;
221 });
222});