Skip to content

Commit 4e5c661

Browse files
committed
tests: add test to ClassToggler
1 parent 634b70d commit 4e5c661

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed

js/tests/unit/class-toggler.spec.js

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
import ClassToggler from '../../src/class-toggler'
2+
3+
/** Test helpers */
4+
import { getFixture, clearFixture, jQueryMock } from '../helpers/fixture'
5+
6+
describe('ClassToggler', () => {
7+
let fixtureEl
8+
9+
beforeAll(() => {
10+
fixtureEl = getFixture()
11+
})
12+
13+
afterEach(() => {
14+
clearFixture()
15+
})
16+
17+
describe('attach', () => {
18+
it('should add the add-this-class class to c-app element', done => {
19+
fixtureEl.innerHTML = [
20+
'<div class="c-app">',
21+
' <button type="button" class="c-class-toggler" data-target=".c-app" data-attach="add-this-class"></div>',
22+
'</div>'
23+
].join('')
24+
25+
const c = document.querySelector('.c-app')
26+
const toggler = document.querySelector('.c-class-toggler')
27+
28+
c.addEventListener('classattached', () => {
29+
expect(c.classList.contains('add-this-class')).toEqual(true)
30+
done()
31+
})
32+
33+
toggler.click()
34+
})
35+
})
36+
37+
describe('detach', () => {
38+
it('should remove the add-this-class class from c-app element', done => {
39+
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>',
42+
'</div>'
43+
].join('')
44+
45+
const c = document.querySelector('.c-app')
46+
const toggler = document.querySelector('.c-class-toggler')
47+
48+
c.addEventListener('classdetached', () => {
49+
expect(c.classList.contains('add-this-class')).toEqual(false)
50+
done()
51+
})
52+
53+
toggler.click()
54+
})
55+
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 => {
57+
fixtureEl.innerHTML = [
58+
'<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>',
60+
'</div>'
61+
].join('')
62+
63+
const c = document.querySelector('.c-app')
64+
const toggler = document.querySelector('.c-class-toggler')
65+
66+
c.addEventListener('classdetached', () => {
67+
setTimeout(function() {
68+
expect(c.classList.contains('test-xl-show')).toEqual(false)
69+
expect(c.classList.contains('test-lg-show')).toEqual(false)
70+
expect(c.classList.contains('test-md-show')).toEqual(false)
71+
expect(c.classList.contains('test-sm-show')).toEqual(false)
72+
expect(c.classList.contains('test-show')).toEqual(false)
73+
done()
74+
}, 1000);
75+
76+
})
77+
78+
toggler.click()
79+
})
80+
})
81+
82+
describe('toggle', () => {
83+
it('should add the `toggle` class to c-app element', done => {
84+
fixtureEl.innerHTML = [
85+
'<div class="c-app">',
86+
' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle="toggle"></div>',
87+
'</div>'
88+
].join('')
89+
90+
const c = document.querySelector('.c-app')
91+
const toggler = document.querySelector('.c-class-toggler')
92+
93+
c.addEventListener('classattached', () => {
94+
expect(c.classList.contains('toggle')).toEqual(true)
95+
done()
96+
})
97+
98+
toggler.click()
99+
})
100+
101+
it('should remove the `toggle` class from c-app element', done => {
102+
fixtureEl.innerHTML = [
103+
'<div class="c-app toggle">',
104+
' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle="toggle"></div>',
105+
'</div>'
106+
].join('')
107+
108+
const c = document.querySelector('.c-app')
109+
const toggler = document.querySelector('.c-class-toggler')
110+
111+
c.addEventListener('classdetached', () => {
112+
expect(c.classList.contains('toggle')).toEqual(false)
113+
done()
114+
})
115+
116+
toggler.click()
117+
})
118+
})
119+
120+
describe('class', () => {
121+
it('should add the `toggle` class to c-app element', done => {
122+
fixtureEl.innerHTML = [
123+
'<div class="c-app">',
124+
' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle="toggle"></div>',
125+
'</div>'
126+
].join('')
127+
128+
const c = document.querySelector('.c-app')
129+
const toggler = document.querySelector('.c-class-toggler')
130+
131+
c.addEventListener('classattached', () => {
132+
expect(c.classList.contains('toggle')).toEqual(true)
133+
done()
134+
})
135+
136+
toggler.click()
137+
})
138+
139+
it('should remove the `toggle` class from c-app element', done => {
140+
fixtureEl.innerHTML = [
141+
'<div class="c-app toggle">',
142+
' <button type="button" class="c-class-toggler" data-target=".c-app" data-toggle="toggle"></div>',
143+
'</div>'
144+
].join('')
145+
146+
const c = document.querySelector('.c-app')
147+
const toggler = document.querySelector('.c-class-toggler')
148+
149+
c.addEventListener('classdetached', () => {
150+
expect(c.classList.contains('toggle')).toEqual(false)
151+
done()
152+
})
153+
154+
toggler.click()
155+
})
156+
})
157+
})

0 commit comments

Comments
 (0)