UNPKG

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