Skip to content

Commit 0e0ecd8

Browse files
committed
Merge branch 'master' into production
2 parents a46c96f + 7260140 commit 0e0ecd8

30 files changed

+322
-132
lines changed

__tests__/components/fields/FieldButton.spec.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
import { mountFormGenerator, generatePropsSingleField } from '@test/_resources/utils.js'
2-
import { describe, it, expect } from 'vitest'
2+
import { describe, it, expect, beforeAll } from 'vitest'
33
import { mount, config } from '@vue/test-utils'
44

55
import FieldButton from '@/fields/core/FieldButton.vue'
66
import FieldPassword from '@/fields/core/FieldPassword.vue'
77
import FieldCheckbox from '@/fields/core/FieldCheckbox.vue'
88

9+
beforeAll(() => {
10+
config.global.components = { FieldButton }
11+
})
12+
913
const form = {
1014
model: {
1115
password: '',
@@ -49,16 +53,14 @@ describe('FieldButton', () => {
4953
})
5054

5155
it('Should render correctly inside form generator', async () => {
52-
config.global.components = { FieldButton }
53-
5456
const formWrapper = mountFormGenerator(form.schema, form.model)
5557
const buttonField = formWrapper.findComponent(FieldButton)
5658
expect(buttonField.exists()).toBeTruthy()
5759
expect(buttonField.find('button').element.innerHTML).toContain(props.field.buttonText)
5860
})
5961

6062
it('Should update model values', async () => {
61-
config.global.components = { FieldPassword, FieldButton, FieldCheckbox }
63+
config.global.components = { ...config.global.components, FieldPassword, FieldCheckbox }
6264

6365
const formWrapper = mountFormGenerator(form.schema, form.model)
6466
expect(formWrapper.find('input[type=password]').exists()).toBe(true)

__tests__/components/fields/FieldCheckbox.spec.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { generatePropsSingleField, generateSchemaSingleField, mountFormGenerator } from '@test/_resources/utils.js'
2-
import { describe, it, expect } from 'vitest'
2+
import { describe, it, expect, beforeAll } from 'vitest'
33
import { mount, config } from '@vue/test-utils'
44

55
import FieldCheckbox from '@/fields/core/FieldCheckbox.vue'
@@ -15,6 +15,10 @@ const form = generateSchemaSingleField(
1515

1616
const props = generatePropsSingleField(form)
1717

18+
beforeAll(() => {
19+
config.global.components = { FieldCheckbox }
20+
})
21+
1822
describe('FieldCheckbox', () => {
1923

2024
it('Should render correctly', async () => {
@@ -29,7 +33,6 @@ describe('FieldCheckbox', () => {
2933
})
3034

3135
it('Should render correctly inside form generator', async() => {
32-
config.global.components = { FieldCheckbox }
3336
const formWrapper = mountFormGenerator(form.schema, form.model)
3437

3538
expect(formWrapper.findComponent(FieldCheckbox).exists()).toBe(true)
@@ -81,11 +84,8 @@ describe('FieldCheckbox', () => {
8184
})
8285

8386
it('Should update model value', async () => {
84-
config.global.components = { FieldCheckbox }
85-
8687
const formWrapper = mountFormGenerator(form.schema, form.model)
8788

88-
8989
const wrapper = formWrapper.findComponent(FieldCheckbox)
9090
expect(wrapper.exists()).toBe(true)
9191

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
import { mountFormGenerator, generatePropsSingleField, generateSchemaSingleField } from '@test/_resources/utils.js'
2+
import { it, describe, expect, beforeAll } from 'vitest'
3+
import { config, mount } from '@vue/test-utils'
4+
5+
import FieldChecklist from '@/fields/core/FieldChecklist.vue'
6+
7+
const form = generateSchemaSingleField(
8+
'checklistTest',
9+
'checklistModel',
10+
'checklist',
11+
null,
12+
'Test label',
13+
[],
14+
{
15+
options: [
16+
{ name: 'Test 1', value: 'test1' },
17+
{ name: 'Test 2', value: 'test2' },
18+
{ name: 'Test 3', value: 'test3' },
19+
{ name: 'Test 4', value: 'test4' }
20+
]
21+
}
22+
)
23+
24+
const props = generatePropsSingleField(form)
25+
26+
beforeAll(() => {
27+
config.global.components = { FieldChecklist }
28+
})
29+
30+
describe('FieldChecklist', () => {
31+
32+
it('Should render correctly', () => {
33+
const wrapper = mount(FieldChecklist, { props })
34+
const checkBoxes = wrapper.findAll('input[type=checkbox]')
35+
expect(checkBoxes.length).toBe(4)
36+
37+
const labels = wrapper.findAll('label')
38+
expect(labels.length).toBe(4)
39+
40+
// Ensure each label has the checkbox that belongs to them
41+
labels.forEach((label, idx) => {
42+
expect(label.text()).toBe('Test ' + (idx + 1))
43+
const checkbox = label.find('input[type=checkbox]')
44+
expect(checkbox.attributes().value).toBe('test' + (idx + 1))
45+
})
46+
47+
})
48+
49+
it('Should render correctly inside form generator', () => {
50+
const formWrapper = mountFormGenerator(form.schema, form.model)
51+
// The first label should be the label that's specified inside the field's schema.
52+
expect(formWrapper.find('label').text()).toContain('Test label')
53+
54+
const checklistField = formWrapper.findComponent(FieldChecklist)
55+
expect(checklistField.exists()).toBe(true)
56+
57+
const labels = checklistField.findAll('label')
58+
expect(labels.length).toBe(4)
59+
})
60+
61+
it('Should emit onInput event', () => {
62+
const wrapper = mount(FieldChecklist, { props })
63+
wrapper.find('input[type=checkbox]').trigger('change')
64+
expect(wrapper.emitted()).toHaveProperty('onInput')
65+
})
66+
67+
it('Should update model value', async () => {
68+
const formWrapper = mountFormGenerator(form.schema, form.model)
69+
const checklistField = formWrapper.findComponent(FieldChecklist)
70+
expect(checklistField.exists()).toBe(true)
71+
72+
const triggerChange = (value) => formWrapper.find(`input[type=checkbox][value=${value}]`).trigger('change')
73+
74+
triggerChange('test2')
75+
expect(formWrapper.vm.model.checklistModel).toContain('test2')
76+
triggerChange('test3')
77+
expect(formWrapper.vm.model.checklistModel).toContain('test3')
78+
79+
// Value should be removed, since it is already present in the model
80+
triggerChange('test2')
81+
expect(formWrapper.vm.model.checklistModel).not.toContain('test2')
82+
})
83+
84+
it('Should update checked state properly', async () => {
85+
const formWrapper = mountFormGenerator(form.schema, form.model)
86+
const checklistField = formWrapper.findComponent(FieldChecklist)
87+
expect(checklistField.exists()).toBe(true)
88+
89+
const test1Checkbox = () => formWrapper.find('input[type=checkbox][value=test1]')
90+
const test4Checkbox = () => formWrapper.find('input[type=checkbox][value=test4')
91+
92+
// Value shouldn't be checked by default.
93+
expect(test1Checkbox().attributes()).not.toHaveProperty('checked')
94+
test1Checkbox().trigger('change')
95+
await checklistField.vm.$nextTick()
96+
expect(checklistField.find('input[type=checkbox][value=test1]').attributes()).toHaveProperty('checked')
97+
98+
// Value shouldn't be checked by default.
99+
expect(test4Checkbox().attributes()).not.toHaveProperty('checked')
100+
test4Checkbox().trigger('change')
101+
await checklistField.vm.$nextTick()
102+
expect(checklistField.find('input[type=checkbox][value=test4]').attributes()).toHaveProperty('checked')
103+
})
104+
105+
it('Should render values present by default, as checked', async () => {
106+
const model = { checklistModel: [ 'test2', 'test4' ] }
107+
const formWrapper = mountFormGenerator(form.schema, model)
108+
109+
// Values should be set inside the model of the form generator
110+
expect(formWrapper.vm.model.checklistModel).toContain('test2')
111+
expect(formWrapper.vm.model.checklistModel).toContain('test4')
112+
expect(formWrapper.vm.model.checklistModel).toHaveLength(2)
113+
114+
const checklistField = formWrapper.findComponent(FieldChecklist)
115+
expect(checklistField.exists()).toBe(true)
116+
// These values should now be checked, since they are in the model by default
117+
expect(checklistField.find('input[type=checkbox][value=test2').attributes()).toHaveProperty('checked')
118+
expect(checklistField.find('input[type=checkbox][value=test4').attributes()).toHaveProperty('checked')
119+
// These shouldn't be checked, since they are not in the default values
120+
expect(checklistField.find('input[type=checkbox][value=test1').attributes()).not.toHaveProperty('checked')
121+
expect(checklistField.find('input[type=checkbox][value=test3').attributes()).not.toHaveProperty('checked')
122+
})
123+
124+
})

__tests__/components/fields/FieldColor.spec.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { mountFormGenerator, generatePropsSingleField, generateSchemaSingleField } from '@test/_resources/utils.js'
22
import { mount, config } from '@vue/test-utils'
3-
import { describe, it, expect } from 'vitest'
3+
import { describe, it, expect, beforeAll } from 'vitest'
44

55
import FieldColor from '@/fields/core/FieldColor.vue'
66

@@ -16,6 +16,10 @@ const form = generateSchemaSingleField(
1616

1717
const props = generatePropsSingleField(form)
1818

19+
beforeAll(() => {
20+
config.global.components = { FieldColor }
21+
})
22+
1923
describe('FieldColor', () => {
2024

2125
it('Should render correctly', async () => {
@@ -24,16 +28,12 @@ describe('FieldColor', () => {
2428
})
2529

2630
it('Should render correctly inside form generator', async () => {
27-
config.global.components = { FieldColor }
28-
2931
const formWrapper = mountFormGenerator(form.schema, form.model)
3032
expect(formWrapper.findComponent(FieldColor).exists()).toBe(true)
3133
expect(formWrapper.find('input[type=color]').exists()).toBe(true)
3234
})
3335

3436
it('Should render correctly, with input', async () => {
35-
config.global.components = { FieldColor }
36-
3737
const schema = { ...form.schema }
3838
schema.fields[0].withInput = true
3939
const formWrapper = mountFormGenerator(schema, form.model)
@@ -50,8 +50,6 @@ describe('FieldColor', () => {
5050
})
5151

5252
it('Should update model value', async () => {
53-
config.global.components = { FieldColor }
54-
5553
const formWrapper = mountFormGenerator(form.schema, form.model)
5654

5755
const wrapper = formWrapper.findComponent(FieldColor)
@@ -61,8 +59,6 @@ describe('FieldColor', () => {
6159
})
6260

6361
it ('Should update model value and sync values', async () => {
64-
config.global.components = { FieldColor }
65-
6662
const schema = { ...form.schema }
6763
schema.fields[0].withInput = true
6864
const formWrapper = mountFormGenerator(schema, form.model)

__tests__/components/fields/FieldMask.spec.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { mountFormGenerator, generatePropsSingleField, generateSchemaSingleField } from '@test/_resources/utils'
22
import { mount, config } from '@vue/test-utils'
3-
import { describe, it, expect } from 'vitest'
3+
import { describe, it, expect, beforeAll } from 'vitest'
44

55
import FieldMask from '@/fields/core/FieldMask.vue'
66

@@ -22,6 +22,9 @@ const form = generateSchemaSingleField(
2222

2323
const props = generatePropsSingleField(form)
2424

25+
beforeAll(() => {
26+
config.global.components = { FieldMask }
27+
})
2528

2629
describe('FieldMask', () => {
2730

@@ -35,7 +38,6 @@ describe('FieldMask', () => {
3538
})
3639

3740
it('Should render correctly inside form generator', async () => {
38-
config.global.components = { FieldMask }
3941
const formWrapper = mountFormGenerator(form.schema, form.model)
4042

4143
expect(formWrapper.findComponent(FieldMask).exists()).toBe(true)
@@ -48,8 +50,6 @@ describe('FieldMask', () => {
4850
})
4951

5052
it('Should update model value, masked', async () => {
51-
config.global.components = { FieldMask }
52-
5353
const formWrapper = mountFormGenerator(form.schema, form.model)
5454

5555
const textField = formWrapper.findComponent(FieldMask)
@@ -59,8 +59,6 @@ describe('FieldMask', () => {
5959
})
6060

6161
it('Should update model value, unmasked', async () => {
62-
config.global.components = { FieldMask }
63-
6462
form.schema.fields[0].maskOptions.unmasked = true
6563
const formWrapper = mountFormGenerator(form.schema, form.model)
6664

__tests__/components/fields/FieldNumber.spec.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { describe, it, expect } from 'vitest'
1+
import { describe, it, expect, beforeAll } from 'vitest'
22
import { mountFormGenerator, generatePropsSingleField, generateSchemaSingleField } from '@test/_resources/utils.js'
33
import { mount, config } from '@vue/test-utils'
44

@@ -19,6 +19,10 @@ const form = generateSchemaSingleField(
1919

2020
const props = generatePropsSingleField(form)
2121

22+
beforeAll(() => {
23+
config.global.components = { FieldNumber }
24+
})
25+
2226
describe('FieldNumber', () => {
2327

2428
it('Should render correctly', async () => {
@@ -27,7 +31,6 @@ describe('FieldNumber', () => {
2731
})
2832

2933
it('Should render correctly inside form generator', async () => {
30-
config.global.components = { FieldNumber }
3134
const formWrapper = mountFormGenerator(form.schema, form.model)
3235
expect(formWrapper.find('input[type=number]').exists()).toBeTruthy()
3336

@@ -44,8 +47,6 @@ describe('FieldNumber', () => {
4447
})
4548

4649
it('Should update model value', async () => {
47-
config.global.components = { FieldNumber }
48-
4950
const formWrapper = mountFormGenerator(form.schema, form.model)
5051
const numberField = formWrapper.findComponent(FieldNumber)
5152
expect(numberField.exists()).toBeTruthy()

__tests__/components/fields/FieldPassword.spec.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { mountFormGenerator, generateSchemaSingleField, generatePropsSingleField } from '@test/_resources/utils.js'
2-
import { describe, it, expect } from 'vitest'
2+
import { describe, it, expect, beforeAll } from 'vitest'
33
import { mount, config } from '@vue/test-utils'
44
import validators from '@/validators'
55

@@ -21,6 +21,10 @@ const propsWithIndicator = {
2121
field: { ...props.field, indicator: true }
2222
}
2323

24+
beforeAll(() => {
25+
config.global.components = { FieldPassword }
26+
})
27+
2428
describe('FieldPassword', () => {
2529

2630
it('Should render correctly', async () => {
@@ -29,8 +33,6 @@ describe('FieldPassword', () => {
2933
})
3034

3135
it('Should render correctly inside form generator', async () => {
32-
config.global.components = { FieldPassword }
33-
3436
const formWrapper = mountFormGenerator(form.schema, form.model)
3537

3638

@@ -85,8 +87,6 @@ describe('FieldPassword', () => {
8587
})
8688

8789
it('Should update model value', async () => {
88-
config.global.components = { FieldPassword }
89-
9090
const formWrapper = mountFormGenerator(form.schema, form.model)
9191

9292

0 commit comments

Comments
 (0)