Skip to content

Commit 700490f

Browse files
committed
test(field-select): add FieldSelect test and rename old one
1 parent d81f47d commit 700490f

File tree

3 files changed

+68
-2
lines changed

3 files changed

+68
-2
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import { generateSchemaSingleField, generatePropsSingleField, mountFormGenerator } from '@test/_resources/utils.js'
2+
import { mount, config } from '@vue/test-utils'
3+
import { describe, it, expect } from 'vitest'
4+
5+
import FieldSelect from '@/fields/input/FieldSelect.vue'
6+
7+
const form = generateSchemaSingleField(
8+
'testSelect',
9+
'selectModel',
10+
'select',
11+
null,
12+
'What is this?',
13+
'',
14+
{
15+
placeholder: 'Select a test value',
16+
options: [
17+
{ value: 'test_1', name: 'Test 1' },
18+
{ value: 'test_2', name: 'Test 2' },
19+
{ value: 'test_3', name: 'Test 3' }
20+
]
21+
}
22+
)
23+
24+
const props = generatePropsSingleField(form)
25+
26+
describe('Test FieldSelect', () => {
27+
28+
it('Should render correctly', async () => {
29+
const wrapper = mount(FieldSelect, { props })
30+
expect(wrapper.find('.vfg-select').exists()).toBeTruthy()
31+
// First option should be filled with placeholder and value should be empty
32+
expect(wrapper.find('.vfg-select-label').element.innerHTML).toContain(props.field.placeholder)
33+
})
34+
35+
it('Should open correctly', async () => {
36+
const wrapper = mount(FieldSelect, { props })
37+
const selectEl = wrapper.find('.vfg-select-label')
38+
await selectEl.trigger('click')
39+
expect(wrapper.vm.isOpened).toBeTruthy()
40+
await wrapper.vm.$nextTick()
41+
expect(wrapper.findAll('.vfg-select-option').length).toBe(3)
42+
})
43+
44+
it('Should render correctly inside form generator', async () => {
45+
config.global.components = { FieldSelect }
46+
const formWrapper = mountFormGenerator(form.schema, props)
47+
const selectComp = formWrapper.findComponent(FieldSelect)
48+
expect(selectComp.exists()).toBeTruthy()
49+
expect(formWrapper.find('.vfg-select').exists()).toBeTruthy()
50+
})
51+
52+
it('Should update model value', async () => {
53+
config.global.components = { FieldSelect }
54+
const formWrapper = mountFormGenerator(form.schema, props)
55+
const selectComp = formWrapper.findComponent(FieldSelect)
56+
expect(selectComp.exists()).toBeTruthy()
57+
58+
await selectComp.find('.vfg-select-label').trigger('click')
59+
await selectComp.vm.$nextTick()
60+
61+
await selectComp.find('.vfg-select-option').trigger('click')
62+
expect(formWrapper.vm.model.selectModel).toBe('test_1')
63+
expect(selectComp.vm.isOpened).toBeFalsy()
64+
})
65+
66+
})

__tests__/components/fields/FieldSelectNative.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const form = generateSchemaSingleField(
2323

2424
const props = generatePropsSingleField(form)
2525

26-
describe('Test FieldSelect', () => {
26+
describe('Test FieldSelectNative', () => {
2727

2828
it('Should render correctly', async () => {
2929
const wrapper = mount(FieldSelect, { props })

src/fields/input/FieldSelect.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div class="vfg-select">
33
<span class="vfg-select-label" :class="{'text-muted': !selectedName}" @click.prevent="onClickInput">
44
<template v-if="selectedName">{{ selectedName }}</template>
5-
<template v-else>{{ field.emptyText || 'Select an option' }}</template>
5+
<template v-else>{{ field.placeholder || 'Select an option' }}</template>
66
<span style="float:right;">
77
<!-- ChevronDown from https://heroicons.com -->
88
<svg

0 commit comments

Comments
 (0)