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+ } )
0 commit comments