UNPKG

4.34 kBJavaScriptView Raw
1
2var tf = new TableFilter('demo', {
3 base_path: '../dist/tablefilter/',
4 loader: true
5});
6tf.init();
7
8var loader = tf.feature('loader');
9
10module('Sanity checks');
11test('Loader component', function() {
12 notEqual(loader, null, 'Loader instanciated');
13 equal(loader.cont.nodeName, 'DIV', 'Loader DOM container');
14});
15test('Does not init if initialised', function() {
16 // setup
17 var show = loader.show;
18 var hit = 0;
19 loader.show = function() {
20 hit++;
21 };
22
23 // act
24 loader.init();
25
26 // assert
27 deepEqual(hit, 0, 'does not initialise');
28
29 loader.show = show;
30});
31
32module('Feature interface');
33test('Properties', function() {
34 deepEqual(loader.tf instanceof TableFilter, true, 'TableFilter instance');
35 deepEqual(loader.feature, 'loader', 'Feature name');
36 deepEqual(loader.enabled, true, 'Feature enabled');
37 deepEqual(loader.initialized, true, 'Feature enabled');
38 deepEqual(typeof loader.config, 'object', 'TF configuration object');
39 deepEqual(typeof loader.init, 'function', 'Feature init method');
40 deepEqual(typeof loader.destroy, 'function', 'Feature destroy method');
41 deepEqual(typeof loader.reset, 'function', 'Feature reset method');
42 deepEqual(typeof loader.enable, 'function', 'Feature enable method');
43 deepEqual(typeof loader.disable, 'function', 'Feature enable method');
44 deepEqual(typeof loader.isEnabled, 'function', 'Feature enable method');
45});
46test('Can destroy', function() {
47 loader.destroy();
48 deepEqual(loader.initialized, false, 'not initialised');
49});
50test('Can reset', function() {
51 loader.reset();
52 deepEqual(loader.enabled, true, 'enabled');
53});
54test('Can disable', function() {
55 loader.disable();
56 deepEqual(loader.enabled, false, 'disabled');
57});
58test('Can enable', function() {
59 loader.enable();
60 deepEqual(loader.enabled, true, 'enabled');
61});
62test('Can init', function() {
63 loader.destroy();
64 loader.enable();
65 loader.init();
66 deepEqual(loader.enabled, true, 'enabled');
67});
68test('Can check is enabled', function() {
69 loader.isEnabled();
70 deepEqual(loader.enabled, true, 'enabled');
71});
72
73module('Behaviour');
74test('Can show loader', function() {
75 loader.show('');
76 deepEqual(loader.cont.style.display, '', 'Loader is displayed');
77});
78test('Does not show loader if feature not enabled', function() {
79 // setup
80 var isEnabled = loader.isEnabled;
81 var hit = 0;
82 loader.isEnabled = function() {
83 hit++;
84 };
85
86 // act
87 loader.show('');
88
89 // assert
90 deepEqual(hit, 1, 'loader not shown');
91
92 loader.isEnabled = isEnabled;
93});
94test('Can generate loader in target element', function() {
95 // setup
96 loader.destroy();
97 loader.targetId = 'my-loader';
98 var targetEl = document.getElementById('my-loader');
99
100 // act
101 loader.init();
102
103 // assert
104 deepEqual(targetEl.innerHTML, '<div class="loader">Loading...</div>',
105 'Loader injected in target element');
106});
107test('Can generate loader with custom html', function() {
108 // setup
109 loader.destroy();
110 loader.html = '<h3>loading...</h3>';
111
112 // act
113 loader.init();
114
115 // assert
116 deepEqual(loader.cont.innerHTML, '<h3>loading...</h3>',
117 'Loader with custom html');
118});
119test('Can show loader when known event is emitted', function() {
120 // setup
121 var show = loader.show;
122 var hit = 0;
123 loader.show = function() {
124 hit++;
125 };
126
127 // act
128 tf.emitter.emit('before-clearing-filters', tf);
129
130 // assert
131 deepEqual(hit, 1, 'show method is called');
132
133 loader.show = show;
134});
135test('Can hide loader when known event is emitted', function() {
136 // setup
137 var show = loader.show;
138 var hit = 0;
139 var arg = null;
140 loader.show = function() {
141 hit++;
142 arg = arguments[0];
143 };
144
145 // act
146 tf.emitter.emit('after-clearing-filters', tf);
147
148 // assert
149 deepEqual(hit, 1, 'show method is called');
150 deepEqual(arg, 'none', 'with `none` argument');
151
152 loader.show = show;
153});
154
155module('Tear-down');
156test('can destroy TableFilter DOM elements', function() {
157 tf.destroy();
158 deepEqual(tf.isInitialized(), false, 'Filters removed');
159});