@@ -14,144 +14,294 @@ describe('ClassToggler', () => {
14
14
clearFixture ( )
15
15
} )
16
16
17
- describe ( 'attach ' , ( ) => {
18
- it ( 'should add the add-this- class class to c-app element' , done => {
17
+ describe ( 'add ' , ( ) => {
18
+ it ( 'should add the ` add-class` class to `. c-app` element' , done => {
19
19
fixtureEl . innerHTML = [
20
20
'<div class="c-app">' ,
21
- ' <button type="button" class="c-class-toggler" data-target=".c-app" data-attach ="add-this -class"></div>' ,
21
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-add-class ="add-class"></div>' ,
22
22
'</div>'
23
23
] . join ( '' )
24
24
25
25
const c = document . querySelector ( '.c-app' )
26
26
const toggler = document . querySelector ( '.c-class-toggler' )
27
27
28
- c . addEventListener ( 'classattached ' , ( ) => {
29
- expect ( c . classList . contains ( 'add-this- class' ) ) . toEqual ( true )
28
+ c . addEventListener ( 'classadded ' , ( ) => {
29
+ expect ( c . classList . contains ( 'add-class' ) ) . toEqual ( true )
30
30
done ( )
31
31
} )
32
32
33
33
toggler . click ( )
34
34
} )
35
+
36
+ it ( 'should add `add-class1` and `add-class2` classes to `.c-app` element' , done => {
37
+ fixtureEl . innerHTML = [
38
+ '<div class="c-app">' ,
39
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-add-class="add-class1,add-class2"></div>' ,
40
+ '</div>'
41
+ ] . join ( '' )
42
+
43
+ const c = document . querySelector ( '.c-app' )
44
+ const toggler = document . querySelector ( '.c-class-toggler' )
45
+
46
+ c . addEventListener ( 'classadded' , ( ) => {
47
+ // eslint-disable-next-line max-nested-callbacks
48
+ setTimeout ( ( ) => {
49
+ expect ( c . classList . contains ( 'add-class1' ) ) . toEqual ( true )
50
+ expect ( c . classList . contains ( 'add-class2' ) ) . toEqual ( true )
51
+ done ( )
52
+ } , 250 )
53
+ } )
54
+
55
+ toggler . click ( )
56
+ } )
35
57
} )
36
58
37
- describe ( 'detach ' , ( ) => {
38
- it ( 'should remove the add-this- class class from c-app element' , done => {
59
+ describe ( 'remove ' , ( ) => {
60
+ it ( 'should remove the `remove- class` class from `. c-app` element' , done => {
39
61
fixtureEl . innerHTML = [
40
- '<div class="c-app add-this -class">' ,
41
- ' <button type="button" class="c-class-toggler" data-target=".c-app" data-detach="add-this -class"></div>' ,
62
+ '<div class="c-app remove -class">' ,
63
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-remove-class="remove -class"></div>' ,
42
64
'</div>'
43
65
] . join ( '' )
44
66
45
67
const c = document . querySelector ( '.c-app' )
46
68
const toggler = document . querySelector ( '.c-class-toggler' )
47
69
48
- c . addEventListener ( 'classdetached ' , ( ) => {
49
- expect ( c . classList . contains ( 'add-this -class' ) ) . toEqual ( false )
70
+ c . addEventListener ( 'classremoved ' , ( ) => {
71
+ expect ( c . classList . contains ( 'remove -class' ) ) . toEqual ( false )
50
72
done ( )
51
73
} )
52
74
53
75
toggler . click ( )
54
76
} )
55
77
56
- it ( 'should remove following classes from tc-app element `test-xl-show`, `test-lg-show`, `test-md-show`, `test-sm-show`, `test-show`' , done => {
78
+ it ( 'should remove `remove-class1`, `remove-class2` and ` remove-class2` classes from `.c-app` element' , done => {
79
+ fixtureEl . innerHTML = [
80
+ '<div class="c-app">' ,
81
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-remove-class="remove-class1,remove-class2, remove-class3"></div>' ,
82
+ '</div>'
83
+ ] . join ( '' )
84
+
85
+ const c = document . querySelector ( '.c-app' )
86
+ const toggler = document . querySelector ( '.c-class-toggler' )
87
+
88
+ c . addEventListener ( 'classremoved' , ( ) => {
89
+ // eslint-disable-next-line max-nested-callbacks
90
+ setTimeout ( ( ) => {
91
+ expect ( c . classList . contains ( 'remove-class1' ) ) . toEqual ( false )
92
+ expect ( c . classList . contains ( 'remove-class2' ) ) . toEqual ( false )
93
+ expect ( c . classList . contains ( 'remove-class3' ) ) . toEqual ( false )
94
+ done ( )
95
+ } , 250 )
96
+ } )
97
+
98
+ toggler . click ( )
99
+ } )
100
+
101
+ it ( 'should remove following classes from the `.c-app` element `test-xl-show`, `test-lg-show`, `test-md-show`, `test-sm-show`, `test-show`' , done => {
57
102
fixtureEl . innerHTML = [
58
103
'<div class="c-app test-xl-show test-lg-show test-md-show test-sm-show test-show">' ,
59
- ' <button type="button" class="c-class-toggler" data-target=".c-app" data-detach ="test-xl-show" data-responsive="true"></div>' ,
104
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-remove-class ="test-xl-show" data-responsive="true"></div>' ,
60
105
'</div>'
61
106
] . join ( '' )
62
107
63
108
const c = document . querySelector ( '.c-app' )
64
109
const toggler = document . querySelector ( '.c-class-toggler' )
65
110
66
- c . addEventListener ( 'classdetached' , ( ) => {
67
- setTimeout ( function ( ) {
111
+ c . addEventListener ( 'classremoved' , ( ) => {
112
+ // eslint-disable-next-line max-nested-callbacks
113
+ setTimeout ( ( ) => {
68
114
expect ( c . classList . contains ( 'test-xl-show' ) ) . toEqual ( false )
69
115
expect ( c . classList . contains ( 'test-lg-show' ) ) . toEqual ( false )
70
116
expect ( c . classList . contains ( 'test-md-show' ) ) . toEqual ( false )
71
117
expect ( c . classList . contains ( 'test-sm-show' ) ) . toEqual ( false )
72
118
expect ( c . classList . contains ( 'test-show' ) ) . toEqual ( false )
73
119
done ( )
74
- } , 1000 ) ;
120
+ } , 250 )
121
+ } )
122
+
123
+ toggler . click ( )
124
+ } )
125
+
126
+ it ( 'should remove the `test-show` class from the `.c-app` element' , done => {
127
+ fixtureEl . innerHTML = [
128
+ '<div class="c-app test-show">' ,
129
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-remove-class="test-xl-show" data-responsive="true"></div>' ,
130
+ '</div>'
131
+ ] . join ( '' )
132
+
133
+ const c = document . querySelector ( '.c-app' )
134
+ const toggler = document . querySelector ( '.c-class-toggler' )
75
135
136
+ c . addEventListener ( 'classremoved' , ( ) => {
137
+ expect ( c . classList . contains ( 'test-show' ) ) . toEqual ( false )
138
+ done ( )
76
139
} )
77
140
78
141
toggler . click ( )
79
142
} )
80
143
} )
81
144
82
145
describe ( 'toggle' , ( ) => {
83
- it ( 'should add the `toggle` class to c-app element' , done => {
146
+ it ( 'should add the `toggle` class to `. c-app` element' , done => {
84
147
fixtureEl . innerHTML = [
85
148
'<div class="c-app">' ,
86
- ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle="toggle"></div>' ,
149
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle-class ="toggle"></div>' ,
87
150
'</div>'
88
151
] . join ( '' )
89
152
90
153
const c = document . querySelector ( '.c-app' )
91
154
const toggler = document . querySelector ( '.c-class-toggler' )
92
155
93
- c . addEventListener ( 'classattached ' , ( ) => {
156
+ c . addEventListener ( 'classtoggle ' , ( ) => {
94
157
expect ( c . classList . contains ( 'toggle' ) ) . toEqual ( true )
95
158
done ( )
96
159
} )
97
160
98
161
toggler . click ( )
99
162
} )
100
163
101
- it ( 'should remove the `toggle` class from c-app element' , done => {
164
+ it ( 'should remove the `toggle` class from `. c-app` element' , done => {
102
165
fixtureEl . innerHTML = [
103
166
'<div class="c-app toggle">' ,
104
- ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle="toggle"></div>' ,
167
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle-class ="toggle"></div>' ,
105
168
'</div>'
106
169
] . join ( '' )
107
170
108
171
const c = document . querySelector ( '.c-app' )
109
172
const toggler = document . querySelector ( '.c-class-toggler' )
110
173
111
- c . addEventListener ( 'classdetached ' , ( ) => {
174
+ c . addEventListener ( 'classremoved ' , ( ) => {
112
175
expect ( c . classList . contains ( 'toggle' ) ) . toEqual ( false )
113
176
done ( )
114
177
} )
115
178
116
179
toggler . click ( )
117
180
} )
181
+
182
+ it ( 'should add the `add-class` to `.c-app` element and remove `remove-class`' , done => {
183
+ fixtureEl . innerHTML = [
184
+ '<div class="c-app remove-class">' ,
185
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle-class="add-class, remove-class"></div>' ,
186
+ '</div>'
187
+ ] . join ( '' )
188
+
189
+ const c = document . querySelector ( '.c-app' )
190
+ const toggler = document . querySelector ( '.c-class-toggler' )
191
+
192
+ c . addEventListener ( 'classtoggle' , ( ) => {
193
+ // eslint-disable-next-line max-nested-callbacks
194
+ setTimeout ( ( ) => {
195
+ expect ( c . classList . contains ( 'add-class' ) ) . toEqual ( true )
196
+ expect ( c . classList . contains ( 'remove-class' ) ) . toEqual ( false )
197
+ done ( )
198
+ } , 250 )
199
+ } )
200
+
201
+ toggler . click ( )
202
+ } )
203
+
204
+ it ( 'should remove the `test-show` class from the `.c-app` element' , done => {
205
+ fixtureEl . innerHTML = [
206
+ '<div class="c-app test-show">' ,
207
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle-class="test-xl-show" data-responsive="true"></div>' ,
208
+ '</div>'
209
+ ] . join ( '' )
210
+
211
+ const c = document . querySelector ( '.c-app' )
212
+ const toggler = document . querySelector ( '.c-class-toggler' )
213
+
214
+ c . addEventListener ( 'classtoggle' , ( ) => {
215
+ // eslint-disable-next-line max-nested-callbacks
216
+ setTimeout ( ( ) => {
217
+ expect ( c . classList . contains ( 'test-show' ) ) . toEqual ( false )
218
+ expect ( c . classList . contains ( 'test-xl-show' ) ) . toEqual ( false )
219
+ done ( )
220
+ } , 250 )
221
+ } )
222
+
223
+ toggler . click ( )
224
+ } )
225
+
226
+ it ( 'should remove the `test-show` class from the `.c-app` element and then add `text-xl-show`' , done => {
227
+ fixtureEl . innerHTML = [
228
+ '<div class="c-app test-show">' ,
229
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle-class="test-xl-show" data-responsive="true"></div>' ,
230
+ '</div>'
231
+ ] . join ( '' )
232
+
233
+ const c = document . querySelector ( '.c-app' )
234
+ const toggler = document . querySelector ( '.c-class-toggler' )
235
+
236
+ c . addEventListener ( 'classremoved' , ( ) => {
237
+ expect ( c . classList . contains ( 'test-show' ) ) . toEqual ( false )
238
+ expect ( c . classList . contains ( 'test-xl-show' ) ) . toEqual ( false )
239
+ } )
240
+
241
+ c . addEventListener ( 'classadded' , ( ) => {
242
+ expect ( c . classList . contains ( 'test-show' ) ) . toEqual ( false )
243
+ expect ( c . classList . contains ( 'test-xl-show' ) ) . toEqual ( true )
244
+ done ( )
245
+ } )
246
+
247
+ toggler . click ( )
248
+ toggler . click ( )
249
+ } )
118
250
} )
119
251
120
252
describe ( 'class' , ( ) => {
121
- it ( 'should add the `toggle` class to c-app element' , done => {
253
+ it ( 'should add the `toggle` class to `. c-app` element' , done => {
122
254
fixtureEl . innerHTML = [
123
255
'<div class="c-app">' ,
124
- ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle ="toggle"></div>' ,
256
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-class ="toggle"></div>' ,
125
257
'</div>'
126
258
] . join ( '' )
127
259
128
260
const c = document . querySelector ( '.c-app' )
129
261
const toggler = document . querySelector ( '.c-class-toggler' )
130
262
131
- c . addEventListener ( 'classattached ' , ( ) => {
263
+ c . addEventListener ( 'classtoggle ' , ( ) => {
132
264
expect ( c . classList . contains ( 'toggle' ) ) . toEqual ( true )
133
265
done ( )
134
266
} )
135
267
136
268
toggler . click ( )
137
269
} )
138
270
139
- it ( 'should remove the `toggle` class from c-app element' , done => {
271
+ it ( 'should remove the `toggle` class from `. c-app` element' , done => {
140
272
fixtureEl . innerHTML = [
141
273
'<div class="c-app toggle">' ,
142
- ' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle ="toggle"></div>' ,
274
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-class ="toggle"></div>' ,
143
275
'</div>'
144
276
] . join ( '' )
145
277
146
278
const c = document . querySelector ( '.c-app' )
147
279
const toggler = document . querySelector ( '.c-class-toggler' )
148
280
149
- c . addEventListener ( 'classdetached ' , ( ) => {
281
+ c . addEventListener ( 'classremoved ' , ( ) => {
150
282
expect ( c . classList . contains ( 'toggle' ) ) . toEqual ( false )
151
283
done ( )
152
284
} )
153
285
154
286
toggler . click ( )
155
287
} )
288
+
289
+ it ( 'should remove the `test-show` class from the `.c-app` element' , done => {
290
+ fixtureEl . innerHTML = [
291
+ '<div class="c-app test-show">' ,
292
+ ' <button type="button" class="c-class-toggler" data-target=".c-app" data-class="test-xl-show" data-responsive="true"></div>' ,
293
+ '</div>'
294
+ ] . join ( '' )
295
+
296
+ const c = document . querySelector ( '.c-app' )
297
+ const toggler = document . querySelector ( '.c-class-toggler' )
298
+
299
+ c . addEventListener ( 'classremoved' , ( ) => {
300
+ expect ( c . classList . contains ( 'test-show' ) ) . toEqual ( false )
301
+ done ( )
302
+ } )
303
+
304
+ toggler . click ( )
305
+ } )
156
306
} )
157
307
} )
0 commit comments