UNPKG

5 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 ext = tf.extension('colsVisibility');
44 ext.hideCol(2);
45 ext.hideCol(3);
46 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
47 deepEqual(ext.isColHidden(3), true, 'Expected column is hidden');
48});
49test('Show columns', function() {
50 ext = tf.extension('colsVisibility');
51 ext.showCol(2);
52 ext.showCol(3);
53 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
54 deepEqual(ext.isColHidden(3), false, 'Expected column is displayed');
55});
56test('Toggle column', function() {
57 ext = tf.extension('colsVisibility');
58 ext.toggleCol(2);
59 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
60
61 ext.toggleCol(2);
62 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
63});
64test('Popup container auto-closes when user clicks away', function() {
65 // setup
66 ext = tf.extension('colsVisibility');
67 ext.toggle();
68
69 // act
70 var evObj = document.createEvent('HTMLEvents');
71 evObj.initEvent('mouseup', true, true);
72 // mouseup fired from a table cell
73 tf.dom().rows[3].cells[2].dispatchEvent(evObj);
74
75 // assert
76 deepEqual(ext.contEl.style.display, 'none',
77 'Popup container closed after user clicks away'
78 );
79});
80test('Close button closes popup', function() {
81 // setup
82 ext = tf.extension('colsVisibility');
83 ext.toggle();
84
85 // act
86 var evObj = document.createEvent('HTMLEvents');
87 evObj.initEvent('click', true, true);
88 ext.contEl.querySelector('.colVis').dispatchEvent(evObj);
89
90 // assert
91 deepEqual(ext.contEl.style.display, 'none',
92 'Close button closes popup'
93 );
94});
95test('Button closes popup when already open', function() {
96 // setup
97 ext = tf.extension('colsVisibility');
98 ext.toggle();
99
100 // act
101 var evObj = document.createEvent('HTMLEvents');
102 evObj.initEvent('click', true, true);
103 ext.btnEl.dispatchEvent(evObj);
104
105 // assert
106 deepEqual(ext.contEl.style.display, 'none',
107 'Close button closes popup'
108 );
109});
110
111test('Toggle columns list container', function() {
112 ext = tf.extension('colsVisibility');
113 ext.toggle();
114 deepEqual(ext.contEl.style.display, 'inline', 'columns list visible');
115
116 ext.toggle();
117 deepEqual(ext.contEl.style.display, 'none', 'columns list visible');
118});
119test('Hide columns', function() {
120 ext = tf.extension('colsVisibility');
121 ext.hideCol(2);
122 ext.hideCol(3);
123 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
124 deepEqual(ext.isColHidden(3), true, 'Expected column is hidden');
125});
126test('Show columns', function() {
127 ext = tf.extension('colsVisibility');
128 ext.showCol(2);
129 ext.showCol(3);
130 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
131 deepEqual(ext.isColHidden(3), false, 'Expected column is displayed');
132});
133test('Toggle column', function() {
134 ext = tf.extension('colsVisibility');
135 ext.toggleCol(2);
136 deepEqual(ext.isColHidden(2), true, 'Expected column is hidden');
137
138 ext.toggleCol(2);
139 deepEqual(ext.isColHidden(2), false, 'Expected column is displayed');
140});
141test('Destroy extension and tablefilter', function() {
142 ext = tf.extension('colsVisibility');
143 ext.destroy();
144 deepEqual(ext.initialized, false, 'Extension no longer initialized');
145 deepEqual(ext.contEl, null, 'Columns list container removed');
146 deepEqual(ext.btnEl, null, 'Button removed');
147
148 tf.destroy();
149});