UNPKG

5.51 kBJavaScriptView Raw
1
2var tf = new TableFilter('demo', {
3 base_path: '../dist/tablefilter/',
4 grid_layout: true,
5 extensions:[{ name: 'colsVisibility' }]
6});
7tf.init();
8var ext;
9
10module('Sanity checks');
11test('Extension initialization', function() {
12 ext = tf.extension('colsVisibility');
13 deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
14 notEqual(ext, null, 'Extension instanciated');
15 deepEqual(ext.initialized, true, 'Extension initialized');
16 deepEqual(ext.text, 'Hide: ', 'Text setting');
17 deepEqual(ext.btnText, 'Columns▼', 'Button text setting');
18});
19
20module('UI checks');
21test('UI elements', function() {
22 ext = tf.extension('colsVisibility');
23 var span = ext.spanEl;
24 var cont = ext.contEl;
25 var btn = ext.btnEl;
26 deepEqual(span.nodeName, 'SPAN', 'Container element');
27 deepEqual(cont.nodeName, 'DIV', 'Container element');
28 deepEqual(cont.getElementsByTagName('p')[0].innerHTML,
29 'Hide: ', 'Expected text');
30 deepEqual(btn.nodeName, 'A', 'Button element');
31 deepEqual(btn.innerHTML, 'Columns▼');
32});
33module('Behaviour');
34test('Toggle columns list container', function() {
35 ext = tf.extension('colsVisibility');
36 ext.toggle();
37 deepEqual(ext.contEl.style.display, 'inline', 'columns list visible');
38
39 ext.toggle();
40 deepEqual(ext.contEl.style.display, 'none', 'columns list visible');
41});
42test('Hide columns', function() {
43 // setup
44 ext = tf.extension('colsVisibility');
45 var cols = tf.dom().getElementsByTagName('COL');
46
47 // act
48 ext.hideCol(2);
49 ext.hideCol(3);
50
51 // assert
52 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
53 deepEqual(ext.isColHidden(3), true, 'Expected column is hidden');
54 deepEqual(cols[2].style.display, 'none', 'Column`s element display value');
55 deepEqual(cols[3].style.display, 'none', 'Column`s element display value');
56});
57test('Show columns', function() {
58 // setup
59 ext = tf.extension('colsVisibility');
60 var cols = tf.dom().getElementsByTagName('COL');
61
62 // act
63 ext.showCol(2);
64 ext.showCol(3);
65
66 // assert
67 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
68 deepEqual(ext.isColHidden(3), false, 'Expected column is displayed');
69 deepEqual(cols[2].style.display, '', 'Column`s element display value');
70 deepEqual(cols[3].style.display, '', 'Column`s element display value');
71});
72test('Toggle column', function() {
73 ext = tf.extension('colsVisibility');
74 ext.toggleCol(2);
75 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
76
77 ext.toggleCol(2);
78 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
79});
80test('Popup container auto-closes when user clicks away', function() {
81 // setup
82 ext = tf.extension('colsVisibility');
83 ext.toggle();
84
85 // act
86 var evObj = document.createEvent('HTMLEvents');
87 evObj.initEvent('mouseup', true, true);
88 // mouseup fired from a table cell
89 tf.dom().rows[3].cells[2].dispatchEvent(evObj);
90
91 // assert
92 deepEqual(ext.contEl.style.display, 'none',
93 'Popup container closed after user clicks away'
94 );
95});
96test('Close button closes popup', function() {
97 // setup
98 ext = tf.extension('colsVisibility');
99 ext.toggle();
100
101 // act
102 var evObj = document.createEvent('HTMLEvents');
103 evObj.initEvent('click', true, true);
104 ext.contEl.querySelector('.colVis').dispatchEvent(evObj);
105
106 // assert
107 deepEqual(ext.contEl.style.display, 'none',
108 'Close button closes popup'
109 );
110});
111test('Button closes popup when already open', function() {
112 // setup
113 ext = tf.extension('colsVisibility');
114 ext.toggle();
115
116 // act
117 var evObj = document.createEvent('HTMLEvents');
118 evObj.initEvent('click', true, true);
119 ext.btnEl.dispatchEvent(evObj);
120
121 // assert
122 deepEqual(ext.contEl.style.display, 'none',
123 'Close button closes popup'
124 );
125});
126
127test('Toggle columns list container', function() {
128 ext = tf.extension('colsVisibility');
129 ext.toggle();
130 deepEqual(ext.contEl.style.display, 'inline', 'columns list visible');
131
132 ext.toggle();
133 deepEqual(ext.contEl.style.display, 'none', 'columns list visible');
134});
135test('Hide columns', function() {
136 ext = tf.extension('colsVisibility');
137 ext.hideCol(2);
138 ext.hideCol(3);
139 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
140 deepEqual(ext.isColHidden(3), true, 'Expected column is hidden');
141});
142test('Show columns', function() {
143 ext = tf.extension('colsVisibility');
144 ext.showCol(2);
145 ext.showCol(3);
146 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
147 deepEqual(ext.isColHidden(3), false, 'Expected column is displayed');
148});
149test('Toggle column', function() {
150 ext = tf.extension('colsVisibility');
151 ext.toggleCol(2);
152 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
153
154 ext.toggleCol(2);
155 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
156});
157test('Destroy extension and tablefilter', function() {
158 ext = tf.extension('colsVisibility');
159 ext.destroy();
160 deepEqual(ext.initialized, false, 'Extension no longer initialized');
161 deepEqual(ext.contEl, null, 'Columns list container removed');
162 deepEqual(ext.btnEl, null, 'Button removed');
163
164 tf.destroy();
165});