UNPKG

6.79 kBJavaScriptView Raw
1var tf = new TableFilter('demo', {
2 base_path: '../dist/tablefilter/',
3 rows_counter: true
4});
5tf.init();
6
7var toolbar = tf.feature('toolbar');
8
9module('Sanity checks');
10test('toolbar component', function() {
11 // assert
12 notEqual(toolbar, null, 'toolbar instanciated');
13 equal(toolbar.contCssClass, 'inf', 'container css class');
14 equal(toolbar.lContCssClass, 'ldiv', 'left container css class');
15 equal(toolbar.cContCssClass, 'mdiv', 'middle container css class');
16 equal(toolbar.rContCssClass, 'rdiv', 'right container css class');
17 equal(toolbar.tgtId, null, 'external container id null');
18 notEqual(toolbar.cont, null, 'container created');
19 notEqual(toolbar.lCont, null, 'left inner container created');
20 notEqual(toolbar.cCont, null, 'middle inner container created');
21 notEqual(toolbar.rCont, null, 'right inner container created');
22 equal(toolbar.emitter.events['initializing-feature'].length, 1,
23 'subscribed to `initializing-feature` event');
24 equal(toolbar.emitter.events['initializing-extension'].length, 1,
25 'subscribed to `initializing-extension` event');
26});
27
28module('Feature interface');
29test('Properties', function() {
30 deepEqual(toolbar.tf instanceof TableFilter, true, 'TableFilter instance');
31 deepEqual(toolbar.feature, 'toolbar', 'Feature name');
32 deepEqual(toolbar.enabled, true, 'Feature enabled');
33 deepEqual(toolbar.initialized, true, 'Feature enabled');
34 deepEqual(typeof toolbar.config, 'object', 'TF configuration object');
35 deepEqual(typeof toolbar.init, 'function', 'Feature init method');
36 deepEqual(typeof toolbar.destroy, 'function', 'Feature destroy method');
37 deepEqual(typeof toolbar.reset, 'function', 'Feature reset method');
38 deepEqual(typeof toolbar.enable, 'function', 'Feature enable method');
39 deepEqual(typeof toolbar.disable, 'function', 'Feature enable method');
40 deepEqual(typeof toolbar.isEnabled, 'function', 'Feature enable method');
41});
42test('Can destroy', function() {
43 toolbar.destroy();
44 deepEqual(toolbar.initialized, false, 'not initialised');
45});
46test('Can reset', function() {
47 toolbar.reset();
48 deepEqual(toolbar.enabled, true, 'enabled');
49});
50test('Can disable', function() {
51 toolbar.disable();
52 deepEqual(toolbar.enabled, false, 'disabled');
53});
54test('Can enable', function() {
55 toolbar.enable();
56 deepEqual(toolbar.enabled, true, 'enabled');
57});
58test('Can init', function() {
59 toolbar.destroy();
60 toolbar.enable();
61 toolbar.init();
62 deepEqual(toolbar.enabled, true, 'enabled');
63});
64test('Can check is enabled', function() {
65 toolbar.isEnabled();
66 deepEqual(toolbar.enabled, true, 'enabled');
67});
68
69module('Behaviour');
70test('Does not init if initialised', function() {
71 // setup
72 var createContainer = toolbar.createContainer;
73 var hit = 0;
74 toolbar.createContainer = function() {
75 hit++;
76 };
77
78 // act
79 toolbar.init();
80
81 // assert
82 deepEqual(hit, 0, 'does not initialise');
83
84 toolbar.createContainer = createContainer;
85});
86
87test('Does not init if external', function() {
88 // setup
89 toolbar.initialized = false;
90 var createContainer = toolbar.createContainer;
91 var hit = 0;
92 toolbar.createContainer = function() {
93 hit++;
94 };
95
96 // act
97 toolbar.init(true);
98
99 // assert
100 deepEqual(hit, 0, 'does not initialise');
101
102 toolbar.createContainer = createContainer;
103 toolbar.initialized = true;
104});
105
106test('Can get container', function() {
107 // act
108 var result = toolbar.container('left');
109
110 // assert
111 deepEqual(result, toolbar.cont.querySelector('.ldiv'),
112 'left inner container');
113});
114
115test('Can get default container', function() {
116 // act
117 var result = toolbar.container();
118
119 // assert
120 deepEqual(result, toolbar.cont.querySelector('.rdiv'),
121 'left inner container');
122});
123
124test('Can get container with appended element', function() {
125 // act
126 var result = toolbar.container('center',
127 document.createElement('span')
128 .appendChild(document.createTextNode('test')));
129
130 // assert
131 deepEqual(result.firstChild, toolbar.cont.querySelector('.mdiv').firstChild,
132 'center inner container with appended element');
133});
134
135test('Can create container with css class', function() {
136 // act
137 var result = toolbar.createContainer(toolbar.cont, 'test');
138
139 // assert
140 deepEqual(result, toolbar.cont.querySelector('.test'),
141 'inner container created');
142});
143
144module('Custom css');
145test('config with custom css', function() {
146 // setup
147 tf.destroy();
148 tf = new TableFilter('demo', {
149 base_path: '../dist/tablefilter/',
150 toolbar: {
151 container_css_class: 'cont-css',
152 left_cont_css_class: 'left-cont-css',
153 right_cont_css_class: 'right-cont-css',
154 center_cont_css_class: 'center-cont-css'
155 }
156 });
157
158 // act
159 tf.init();
160 var toolbar = tf.feature('toolbar');
161
162 deepEqual(toolbar.cont, document.querySelector('.cont-css'),
163 'container with custom css class');
164 deepEqual(toolbar.lCont, toolbar.cont.querySelector('.left-cont-css'),
165 'left inner container with custom css class');
166 deepEqual(toolbar.rCont, document.querySelector('.right-cont-css'),
167 'right inner container with custom css class');
168 deepEqual(toolbar.cCont, document.querySelector('.center-cont-css'),
169 'middle inner container with custom css class');
170});
171
172module('External container');
173test('config with external container id', function() {
174 // setup
175 tf.destroy();
176 tf = new TableFilter('demo', {
177 base_path: '../dist/tablefilter/',
178 toolbar: {
179 target_id: 'ext-cont'
180 }
181 });
182
183 // act
184 tf.init();
185 var toolbar = tf.feature('toolbar');
186
187 // assert
188 deepEqual(toolbar.cont, document.querySelector('#ext-cont').firstChild,
189 'external container element');
190});
191
192module('Grid-layout');
193test('config with grid-layout', function() {
194 // setup
195 tf.destroy();
196 tf = new TableFilter('demo', {
197 base_path: '../dist/tablefilter/',
198 grid_layout: true,
199 toolbar: true
200 });
201
202 // act
203 tf.init();
204 var toolbar = tf.feature('toolbar');
205
206 // assert
207 deepEqual(toolbar.cont, document.querySelector('.grd_inf'),
208 'container element with grid-layout mode');
209});
210
211module('tear-down');
212test('destroy TableFilter', function() {
213 // act
214 tf.destroy();
215
216 // assert
217 deepEqual(tf.feature('toolbar').initialized, false, 'toolbar removed');
218});