1 | var tf = new TableFilter('demo', {
|
2 | base_path: '../dist/tablefilter/',
|
3 | status_bar: true
|
4 | });
|
5 | tf.init();
|
6 |
|
7 | var statusBar = tf.feature('statusBar');
|
8 | module('Sanity checks');
|
9 | test('Status bar component', function() {
|
10 | deepEqual(typeof statusBar, 'object', 'StatusBar instantiated');
|
11 | notEqual(statusBar.container, null, 'container property');
|
12 | });
|
13 | test('Should not initialize if already initialized', function() {
|
14 |
|
15 | var hit = 0;
|
16 | statusBar.initialized = true;
|
17 | var initialEmit = statusBar.emitter.emit;
|
18 | statusBar.emitter.emit = function() {
|
19 | hit++;
|
20 | };
|
21 |
|
22 |
|
23 | statusBar.init();
|
24 |
|
25 |
|
26 | deepEqual(hit, 0, 'emitter.emit not called');
|
27 |
|
28 | statusBar.emitter.emit = initialEmit;
|
29 | });
|
30 | asyncTest('Can display message', function() {
|
31 |
|
32 | statusBar.message('hello world');
|
33 |
|
34 |
|
35 | setTimeout(function(){
|
36 | start();
|
37 | deepEqual(statusBar.msgContainer.innerHTML,
|
38 | 'hello world', 'Message displayed');
|
39 | statusBar.msgContainer.innerHTML = '';
|
40 | }, 2);
|
41 | });
|
42 | asyncTest('Should not display message if not enabled', function() {
|
43 |
|
44 | statusBar.enabled = false;
|
45 |
|
46 |
|
47 | statusBar.message('hello world');
|
48 |
|
49 |
|
50 | setTimeout(function(){
|
51 | start();
|
52 | deepEqual(statusBar.msgContainer.innerHTML,
|
53 | '', 'Message not displayed');
|
54 | }, 2);
|
55 |
|
56 | statusBar.enabled = true;
|
57 | });
|
58 |
|
59 | module('Feature interface');
|
60 | test('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 | });
|
76 | test('Can destroy', function() {
|
77 | statusBar.destroy();
|
78 | deepEqual(statusBar.initialized, false, 'not initialised');
|
79 | });
|
80 | test('Can reset', function() {
|
81 | statusBar.reset();
|
82 | deepEqual(statusBar.enabled, true, 'enabled');
|
83 | });
|
84 | test('Can disable', function() {
|
85 | statusBar.disable();
|
86 | deepEqual(statusBar.enabled, false, 'disabled');
|
87 | });
|
88 | test('Can enable', function() {
|
89 | statusBar.enable();
|
90 | deepEqual(statusBar.enabled, true, 'enabled');
|
91 | });
|
92 | test('Can init', function() {
|
93 | statusBar.destroy();
|
94 | statusBar.enable();
|
95 | statusBar.init();
|
96 | deepEqual(statusBar.enabled, true, 'enabled');
|
97 | });
|
98 | test('Can check is enabled', function() {
|
99 | statusBar.isEnabled();
|
100 | deepEqual(statusBar.enabled, true, 'enabled');
|
101 | });
|
102 |
|
103 | module('UI elements');
|
104 | test('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 |
|
111 | module('Destroy');
|
112 | test('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 |
|
120 | module('Re-set UI');
|
121 | test('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 | });
|
129 | test('Custom container', function() {
|
130 |
|
131 | statusBar.destroy();
|
132 | statusBar.targetId = 'custom-container';
|
133 |
|
134 |
|
135 | statusBar.init();
|
136 |
|
137 |
|
138 | deepEqual(statusBar.msgContainer.nodeName,
|
139 | 'SPAN', 'Custom container element');
|
140 | });
|
141 |
|
142 | module('Tear-down');
|
143 | test('can destroy TableFilter DOM elements', function() {
|
144 | tf.destroy();
|
145 | deepEqual(tf.isInitialized(), false, 'Filters removed');
|
146 | });
|