UNPKG

4.5 kBJavaScriptView Raw
1var tf = new TableFilter('demo', {
2 base_path: '../dist/tablefilter/',
3 status_bar: true
4});
5tf.init();
6
7var statusBar = tf.feature('statusBar');
8module('Sanity checks');
9test('Status bar component', function() {
10 deepEqual(typeof statusBar, 'object', 'StatusBar instantiated');
11 notEqual(statusBar.container, null, 'container property');
12});
13test('Should not initialize if already initialized', function() {
14 // setup
15 var hit = 0;
16 statusBar.initialized = true;
17 var initialEmit = statusBar.emitter.emit;
18 statusBar.emitter.emit = function() {
19 hit++;
20 };
21
22 // act
23 statusBar.init();
24
25 // assert
26 deepEqual(hit, 0, 'emitter.emit not called');
27
28 statusBar.emitter.emit = initialEmit;
29});
30asyncTest('Can display message', function() {
31 // act
32 statusBar.message('hello world');
33
34 // assert
35 setTimeout(function(){
36 start();
37 deepEqual(statusBar.msgContainer.innerHTML,
38 'hello world', 'Message displayed');
39 statusBar.msgContainer.innerHTML = '';
40 }, 2);
41});
42asyncTest('Should not display message if not enabled', function() {
43 // setup
44 statusBar.enabled = false;
45
46 // act
47 statusBar.message('hello world');
48
49 // assert
50 setTimeout(function(){
51 start();
52 deepEqual(statusBar.msgContainer.innerHTML,
53 '', 'Message not displayed');
54 }, 2);
55
56 statusBar.enabled = true;
57});
58
59module('Feature interface');
60test('Properties', function() {
61 deepEqual(statusBar.tf instanceof TableFilter,
62 true, 'TableFilter instance');
63 deepEqual(statusBar.feature, 'statusBar', 'Feature name');
64 deepEqual(statusBar.enabled, true, 'Feature enabled');
65 deepEqual(statusBar.initialized, true, 'Feature enabled');
66 deepEqual(typeof statusBar.emitter, 'object',
67 'Feature has emitter instance');
68 deepEqual(typeof statusBar.config, 'object', 'TF configuration object');
69 deepEqual(typeof statusBar.init, 'function', 'Feature init method');
70 deepEqual(typeof statusBar.destroy, 'function', 'Feature destroy method');
71 deepEqual(typeof statusBar.reset, 'function', 'Feature reset method');
72 deepEqual(typeof statusBar.enable, 'function', 'Feature enable method');
73 deepEqual(typeof statusBar.disable, 'function', 'Feature enable method');
74 deepEqual(typeof statusBar.isEnabled, 'function', 'Feature enable method');
75});
76test('Can destroy', function() {
77 statusBar.destroy();
78 deepEqual(statusBar.initialized, false, 'not initialised');
79});
80test('Can reset', function() {
81 statusBar.reset();
82 deepEqual(statusBar.enabled, true, 'enabled');
83});
84test('Can disable', function() {
85 statusBar.disable();
86 deepEqual(statusBar.enabled, false, 'disabled');
87});
88test('Can enable', function() {
89 statusBar.enable();
90 deepEqual(statusBar.enabled, true, 'enabled');
91});
92test('Can init', function() {
93 statusBar.destroy();
94 statusBar.enable();
95 statusBar.init();
96 deepEqual(statusBar.enabled, true, 'enabled');
97});
98test('Can check is enabled', function() {
99 statusBar.isEnabled();
100 deepEqual(statusBar.enabled, true, 'enabled');
101});
102
103module('UI elements');
104test('Status bar UI elements', function() {
105 var container = statusBar.container,
106 label = statusBar.msgContainer;
107 deepEqual(container.nodeName, 'DIV', 'Status bar container');
108 deepEqual(label.nodeName, 'SPAN', 'Status bar label');
109});
110
111module('Destroy');
112test('Remove UI', function() {
113 statusBar.destroy();
114 var container = statusBar.container,
115 label = statusBar.msgContainer;
116 deepEqual(container, null, 'Status bar container removed');
117 deepEqual(label, null, 'Status bar button removed');
118});
119
120module('Re-set UI');
121test('Status text', function() {
122 statusBar.text = '→←';
123 statusBar.init();
124
125 var label = statusBar.labelContainer;
126 notEqual(
127 label.innerHTML.indexOf('→←'), -1, 'Status bar text');
128});
129test('Custom container', function() {
130 // setup
131 statusBar.destroy();
132 statusBar.targetId = 'custom-container';
133
134 // act
135 statusBar.init();
136
137 // assert
138 deepEqual(statusBar.msgContainer.nodeName,
139 'SPAN', 'Custom container element');
140});
141
142module('Tear-down');
143test('can destroy TableFilter DOM elements', function() {
144 tf.destroy();
145 deepEqual(tf.isInitialized(), false, 'Filters removed');
146});