Skip to content

Commit 58090d3

Browse files
committed
full coverage
1 parent 49dbd22 commit 58090d3

File tree

4 files changed

+335
-0
lines changed

4 files changed

+335
-0
lines changed

tests/unit/Toggle.spec.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { createToggle, findAll } from 'unit-test-helpers'
2+
3+
describe('Toggle', () => {
4+
describe('id', () => {
5+
it('should add id attribute to input', async () => {
6+
const toggle = createToggle({
7+
value: 0,
8+
id: 'my-toggle'
9+
})
10+
11+
const input = findAll(toggle, 'input').at(0)
12+
13+
expect(input.attributes('id')).toBe('my-toggle')
14+
})
15+
16+
it('should add id attribute as for for label', async () => {
17+
const toggle = createToggle({
18+
value: 0,
19+
id: 'my-toggle',
20+
})
21+
22+
const label = findAll(toggle, 'label').at(0)
23+
24+
expect(label.attributes('for')).toBe('my-toggle')
25+
})
26+
})
27+
28+
describe('name', () => {
29+
it('should add name attribute to input', async () => {
30+
const toggle = createToggle({
31+
value: 0,
32+
name: 'my-toggle',
33+
})
34+
35+
const input = findAll(toggle, 'input').at(0)
36+
37+
expect(input.attributes('name')).toBe('my-toggle')
38+
})
39+
})
40+
})
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { createToggle } from 'unit-test-helpers'
2+
3+
describe('useStyle', () => {
4+
describe('cssVars', () => {
5+
it('should define CSS vars', async () => {
6+
const toggle = createToggle({
7+
value: false,
8+
width: 200,
9+
height: 50,
10+
speed: 500,
11+
offBackground: '#e8e8e8',
12+
onBackground: 'blue',
13+
offTextColor: '#111111',
14+
onTextColor: '#f1f1f1',
15+
handleColor: '#000000',
16+
fontSize: '14px'
17+
})
18+
19+
expect(toggle.vm.cssVars).toStrictEqual({
20+
'--toggle-off-background': '#e8e8e8',
21+
'--toggle-on-background': 'blue',
22+
'--toggle-off-text-color': '#111111',
23+
'--toggle-on-text-color': '#f1f1f1',
24+
'--toggle-handle-color': '#000000',
25+
'--toggle-height': '50px',
26+
'--toggle-width': '200px',
27+
'--toggle-speed': '0.5s',
28+
'--toggle-radius': '25px',
29+
'--toggle-handle-size': '44px',
30+
'--toggle-handle-right-on': '47px',
31+
'--toggle-font-size': '14px',
32+
})
33+
})
34+
})
35+
})
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import { createToggle } from 'unit-test-helpers'
2+
import { nextTick } from 'composition-api'
3+
4+
describe('useToggle', () => {
5+
describe('checked', () => {
6+
it('should be true if input value equals trueValue', async () => {
7+
const toggle = createToggle({
8+
value: 'on',
9+
trueValue: 'on',
10+
falseValue: 'off',
11+
})
12+
13+
expect(toggle.vm.checked).toBe(true)
14+
15+
toggle.vm.update('off')
16+
17+
await nextTick()
18+
19+
expect(toggle.vm.checked).toBe(false)
20+
})
21+
})
22+
23+
describe('toggle', () => {
24+
it('should toggle value', async () => {
25+
const toggle = createToggle({
26+
value: 'on',
27+
trueValue: 'on',
28+
falseValue: 'off',
29+
})
30+
31+
toggle.vm.toggle()
32+
33+
await nextTick()
34+
35+
expect(toggle.vm.checked).toBe(false)
36+
expect(toggle.vm.inputValue).toBe('off')
37+
expect(toggle.vm.$parent.value).toBe('off')
38+
39+
toggle.vm.toggle()
40+
41+
await nextTick()
42+
43+
expect(toggle.vm.checked).toBe(true)
44+
expect(toggle.vm.inputValue).toBe('on')
45+
expect(toggle.vm.$parent.value).toBe('on')
46+
})
47+
})
48+
49+
describe('on', () => {
50+
it('should toggle on', async () => {
51+
const toggle = createToggle({
52+
value: 'off',
53+
trueValue: 'on',
54+
falseValue: 'off',
55+
})
56+
57+
toggle.vm.on()
58+
59+
await nextTick()
60+
61+
expect(toggle.vm.checked).toBe(true)
62+
expect(toggle.vm.inputValue).toBe('on')
63+
expect(toggle.vm.$parent.value).toBe('on')
64+
})
65+
})
66+
67+
describe('off', () => {
68+
it('should toggle off', async () => {
69+
const toggle = createToggle({
70+
value: 'on',
71+
trueValue: 'on',
72+
falseValue: 'off',
73+
})
74+
75+
toggle.vm.off()
76+
77+
await nextTick()
78+
79+
expect(toggle.vm.checked).toBe(false)
80+
expect(toggle.vm.inputValue).toBe('off')
81+
expect(toggle.vm.$parent.value).toBe('off')
82+
})
83+
})
84+
})
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
import { createToggle, getValue } from 'unit-test-helpers'
2+
import { nextTick } from 'composition-api'
3+
4+
describe('useValue', () => {
5+
describe('handleInput', () => {
6+
it('should update value', async () => {
7+
const toggle = createToggle({
8+
value: false,
9+
})
10+
11+
toggle.vm.handleInput({
12+
target: {
13+
checked: true
14+
}
15+
})
16+
17+
await nextTick()
18+
19+
expect(toggle.vm.inputValue).toBe(true)
20+
expect(toggle.vm.$parent.value).toBe(true)
21+
22+
toggle.vm.handleInput({
23+
target: {
24+
checked: false
25+
}
26+
})
27+
28+
await nextTick()
29+
30+
expect(toggle.vm.inputValue).toBe(false)
31+
expect(toggle.vm.$parent.value).toBe(false)
32+
})
33+
34+
it('should update value with custom true/false value', async () => {
35+
const toggle = createToggle({
36+
value: 'off',
37+
falseValue: 'off',
38+
trueValue: 'on',
39+
})
40+
41+
toggle.vm.handleInput({
42+
target: {
43+
checked: true
44+
}
45+
})
46+
47+
await nextTick()
48+
49+
expect(toggle.vm.inputValue).toBe('on')
50+
expect(toggle.vm.$parent.value).toBe('on')
51+
52+
toggle.vm.handleInput({
53+
target: {
54+
checked: false
55+
}
56+
})
57+
58+
await nextTick()
59+
60+
expect(toggle.vm.inputValue).toBe('off')
61+
expect(toggle.vm.$parent.value).toBe('off')
62+
})
63+
})
64+
65+
describe('onCreated', () => {
66+
it('should set value to falseValue if v-model is null', async () => {
67+
const toggle = createToggle({
68+
value: null,
69+
falseValue: 'off'
70+
})
71+
72+
await nextTick()
73+
74+
expect(getValue(toggle)).toBe('off')
75+
})
76+
77+
it('should set value to falseValue if v-model is undefined', async () => {
78+
const toggle = createToggle({
79+
value: undefined,
80+
falseValue: 'off'
81+
})
82+
83+
await nextTick()
84+
85+
expect(getValue(toggle)).toBe('off')
86+
})
87+
88+
it('should set value to falseValue if v-model is false', async () => {
89+
const toggle = createToggle({
90+
value: false,
91+
falseValue: 'off'
92+
})
93+
94+
await nextTick()
95+
96+
expect(getValue(toggle)).toBe('off')
97+
})
98+
99+
it('should set value to falseValue if v-model is 0', async () => {
100+
const toggle = createToggle({
101+
value: 0,
102+
falseValue: 'off'
103+
})
104+
105+
await nextTick()
106+
107+
expect(getValue(toggle)).toBe('off')
108+
})
109+
110+
it('should set value to falseValue if v-model is \'0\'', async () => {
111+
const toggle = createToggle({
112+
value: '0',
113+
falseValue: 'off'
114+
})
115+
116+
await nextTick()
117+
118+
expect(getValue(toggle)).toBe('off')
119+
})
120+
121+
it('should set value to falseValue if v-model is \'off\'', async () => {
122+
const toggle = createToggle({
123+
value: 'off',
124+
falseValue: false
125+
})
126+
127+
await nextTick()
128+
129+
expect(getValue(toggle)).toBe(false)
130+
})
131+
132+
it('should set value to trueValue if v-model is true', async () => {
133+
const toggle = createToggle({
134+
value: true,
135+
trueValue: 'on'
136+
})
137+
138+
await nextTick()
139+
140+
expect(getValue(toggle)).toBe('on')
141+
})
142+
143+
it('should set value to trueValue if v-model is 1', async () => {
144+
const toggle = createToggle({
145+
value: 1,
146+
trueValue: 'on'
147+
})
148+
149+
await nextTick()
150+
151+
expect(getValue(toggle)).toBe('on')
152+
})
153+
154+
it('should set value to trueValue if v-model is \'1\'', async () => {
155+
const toggle = createToggle({
156+
value: '1',
157+
trueValue: 'on'
158+
})
159+
160+
await nextTick()
161+
162+
expect(getValue(toggle)).toBe('on')
163+
})
164+
165+
it('should set value to trueValue if v-model is \'on\'', async () => {
166+
const toggle = createToggle({
167+
value: 'on',
168+
trueValue: 1
169+
})
170+
171+
await nextTick()
172+
173+
expect(getValue(toggle)).toBe(1)
174+
})
175+
})
176+
})

0 commit comments

Comments
 (0)