UNPKG

5.57 kBJavaScriptView Raw
1
2var tf = new TableFilter('demo', {
3 base_path: '../dist/tablefilter/',
4 btn_reset: true
5});
6tf.init();
7
8var clearButton = tf.feature('clearButton');
9
10module('Sanity checks');
11test('Clear button component', function() {
12 deepEqual(typeof clearButton, 'object', 'ClearButton instanciated');
13 notEqual(clearButton.container, null, 'container property');
14 notEqual(clearButton.element, null, 'element property');
15});
16
17module('Feature interface');
18test('Properties', function() {
19 deepEqual(
20 clearButton.tf instanceof TableFilter, true, 'TableFilter instance');
21 deepEqual(clearButton.feature, 'btnReset', 'Feature name');
22 deepEqual(clearButton.enabled, true, 'Feature enabled');
23 deepEqual(clearButton.initialized, true, 'Feature enabled');
24 deepEqual(typeof clearButton.emitter, 'object',
25 'Feature has emitter instance');
26 deepEqual(typeof clearButton.config, 'object', 'TF configuration object');
27 deepEqual(typeof clearButton.init, 'function', 'Feature init method');
28 deepEqual(typeof clearButton.destroy, 'function', 'Feature destroy method');
29 deepEqual(typeof clearButton.reset, 'function', 'Feature reset method');
30 deepEqual(typeof clearButton.enable, 'function', 'Feature enable method');
31 deepEqual(typeof clearButton.disable, 'function', 'Feature enable method');
32 deepEqual(typeof clearButton.isEnabled, 'function',
33 'Feature enable method');
34});
35test('Can destroy', function() {
36 clearButton.destroy();
37 deepEqual(clearButton.initialized, false, 'not initialised');
38});
39test('Can reset', function() {
40 clearButton.reset();
41 deepEqual(clearButton.enabled, true, 'enabled');
42});
43test('Can disable', function() {
44 clearButton.disable();
45 deepEqual(clearButton.enabled, false, 'disabled');
46});
47test('Can enable', function() {
48 clearButton.enable();
49 deepEqual(clearButton.enabled, true, 'enabled');
50});
51test('Can init', function() {
52 clearButton.destroy();
53 clearButton.enable();
54 clearButton.init();
55 deepEqual(clearButton.enabled, true, 'enabled');
56});
57test('Can check is enabled', function() {
58 clearButton.isEnabled();
59 deepEqual(clearButton.enabled, true, 'enabled');
60});
61
62module('Behaviour');
63test('Cannot init if already initialised', function() {
64 // setup
65 clearButton.initialized = true;
66 var emit = clearButton.emitter.emit;
67 var hit = 0;
68 clearButton.emitter.emit = function() {
69 hit++;
70 };
71
72 // act
73 clearButton.init();
74
75 // assert
76 deepEqual(hit, 0, 'does not initialise');
77
78 clearButton.emitter.emit = emit;
79});
80
81test('onClick does nothing if not enabled', function() {
82 // setup
83 clearButton.disable();
84 var clearFilters = clearButton.tf.clearFilters;
85 var hit = 0;
86 clearButton.tf.clearFilters = function() {
87 hit++;
88 };
89
90 // act
91 clearButton.onClick();
92
93 // assert
94 deepEqual(hit, 0, 'onClick does nothing');
95
96 clearButton.tf.clearFilters = clearFilters;
97});
98
99test('onClick calls clearFilters if enabled', function() {
100 // setup
101 clearButton.enable();
102 var clearFilters = clearButton.tf.clearFilters;
103 var hit = 0;
104 clearButton.tf.clearFilters = function() {
105 hit++;
106 };
107
108 // act
109 clearButton.onClick();
110
111 // assert
112 deepEqual(hit, 1, 'onClick calls clearFilters');
113
114 clearButton.tf.clearFilters = clearFilters;
115});
116
117module('UI elements');
118test('ClearButton UI elements', function() {
119 var container = clearButton.container;
120 var element = clearButton.element;
121 deepEqual(container.nodeName, 'SPAN', 'Clear button container');
122 deepEqual(element.nodeName, 'INPUT', 'Clear button element');
123});
124
125module('Destroy and re-init');
126test('Remove UI', function() {
127 clearButton.destroy();
128 var btnResetEl = tf.feature('clearButton').element;
129 deepEqual(btnResetEl, null, 'Clear button is removed');
130});
131
132test('Re-set UI with no icons and text button', function() {
133 clearButton.destroy();
134 tf.enableIcons = false;
135 clearButton.html = null;
136 clearButton.text = 'Clear';
137 clearButton.init();
138
139 var btnResetEl = clearButton.element;
140 deepEqual(btnResetEl.nodeName, 'A', 'Clear button tag changed');
141 deepEqual(btnResetEl.innerText, 'Clear', 'Clear button text');
142});
143
144test('Destroy and init with text button and icons enabled', function() {
145 tf.destroy();
146 tf = new TableFilter('demo', {
147 base_path: '../dist/tablefilter/',
148 btn_reset: {
149 text: 'Clear all'
150 }
151 });
152 tf.init();
153
154 clearButton = tf.feature('clearButton');
155
156 var btnResetEl = clearButton.element;
157 deepEqual(btnResetEl.nodeName, 'A', 'Clear button tag changed');
158 deepEqual(btnResetEl.innerText, 'Clear all', 'Clear button text');
159});
160
161test('Destroy and init in external container', function() {
162 tf.destroy();
163 tf = new TableFilter('demo', {
164 base_path: '../dist/tablefilter/',
165 btn_reset: {
166 target_id: 'external-container'
167 }
168 });
169 tf.init();
170
171 clearButton = tf.feature('clearButton');
172
173 deepEqual(clearButton.element.nodeName, 'INPUT', 'Clear button tag');
174 deepEqual(clearButton.container.parentNode.id, 'external-container',
175 'container id');
176});
177
178module('Tear-down');
179test('can destroy TableFilter DOM elements', function() {
180 tf.destroy();
181 deepEqual(tf.isInitialized(), false, 'Filters removed');
182});