11import { defineComponent } from "vue" ;
2- import { InputField , Form } from "../../src/index" ;
3- import { mount , VueWrapper } from "@vue/test-utils" ;
4- import EmptyApp from "./components/EmptyApp.vue" ;
2+ import { FormField , Form } from "./../ ../../src/index" ;
3+ import { DOMWrapper , mount , VueWrapper } from "@vue/test-utils" ;
4+ import EmptyApp from ".. /components/EmptyApp.vue" ;
55import { FormFieldValidationCallback } from "@/types" ;
66
7+ const name = 'age'
78function defineNumberComponent ( ) {
89 return defineComponent ( {
9- template : ' <div><input -field type = "number" name = "age" /></div>' ,
10- components : { InputField }
10+ template : ` <div><form -field type = "number" name = "${ name } " required label = "Numeric" /></div>` ,
11+ components : { FormField }
1112 } )
1213}
1314function defaultMount ( component = defineNumberComponent ( ) ) {
@@ -22,48 +23,55 @@ function defaultMount(component = defineNumberComponent()) {
2223describe ( "Input number" , ( ) => {
2324
2425 let wrap : VueWrapper < any > ;
25- beforeEach ( ( ) => wrap = defaultMount ( ) )
26+ let form : Form
27+ let input : DOMWrapper < HTMLInputElement >
28+ beforeEach ( ( ) => {
29+ wrap = defaultMount ( )
30+ form = ( wrap . vm as any ) . form
31+ input = wrap . find ( 'input' )
32+ } )
2633
34+ test ( "Should show label" , async ( ) => {
35+ expect ( wrap . text ( ) ) . toBe ( "Numeric" )
36+ } )
37+ test ( "Should be empty by default" , async ( ) => {
38+ expect ( input . element . value ) . toBe ( "" )
39+ } )
2740 test ( "Should display value from Form" , async ( ) => {
28- const form = wrap . vm . form as Form ;
2941 form . setValues ( {
3042 age : 25
3143 } )
3244 await wrap . vm . $nextTick ( )
33- expect ( wrap . find ( " input" ) . element . value ) . toBe ( "25" )
45+ expect ( input . element . value ) . toBe ( "25" )
3446 } )
3547 test ( "Should change form value" , async ( ) => {
36- const form = wrap . vm . form as Form ;
3748 form . setValues ( {
3849 age : 25
3950 } )
4051 await wrap . vm . $nextTick ( )
41- expect ( wrap . find ( " input" ) . element . value ) . toBe ( "25" ) ;
52+ expect ( input . element . value ) . toBe ( "25" ) ;
4253 form . setValues ( {
4354 age : 26
4455 } )
4556 await wrap . vm . $nextTick ( )
46- expect ( wrap . find ( " input" ) . element . value ) . toBe ( "26" ) ;
57+ expect ( input . element . value ) . toBe ( "26" ) ;
4758 form . setValues ( {
4859 age : 27
4960 } )
5061 await wrap . vm . $nextTick ( )
51- expect ( wrap . find ( " input" ) . element . value ) . toBe ( "27" ) ;
62+ expect ( input . element . value ) . toBe ( "27" ) ;
5263 } )
5364 test ( "Step Controller Should be hidden if disabled and input should be disabled" , async ( ) => {
54- const form = wrap . vm . form as Form ;
5565 form . setValues ( {
5666 age : 25
5767 } )
5868 form . disable ( 'age' )
5969
6070 await wrap . vm . $nextTick ( )
61- expect ( wrap . find ( " input" ) . element . disabled ) . toBe ( true ) ;
71+ expect ( input . element . disabled ) . toBe ( true ) ;
6272 expect ( wrap . find ( '.widget-number-step_disabled' ) . exists ( ) ) . toBe ( false ) ;
63-
6473 } )
6574 test ( "Click on button should change the value(up arrow/down arrow)" , async ( ) => {
66- const form = wrap . vm . form as Form ;
6775 form . setValues ( {
6876 age : 25
6977 } )
@@ -84,14 +92,12 @@ describe("Input number", () => {
8492 expect ( form . values ) . toEqual ( { age : 25 } ) ;
8593 } )
8694 test ( "Press up and down should change the value" , async ( ) => {
87- const form = wrap . vm . form as Form ;
8895 form . setValues ( {
8996 age : 25
9097 } )
9198
9299 await wrap . vm . $nextTick ( )
93-
94- const input = wrap . find ( "input" ) ;
100+
95101 await input . trigger ( 'keydown.up' ) ;
96102 await input . trigger ( 'keydown.up' ) ;
97103
@@ -103,8 +109,8 @@ describe("Input number", () => {
103109 test ( "If Step was provided it should change onStep" , async ( ) => {
104110
105111 wrap = defaultMount ( defineComponent ( {
106- template : '<div><input -field type = "number" name = "age" step = "10"/></div>' ,
107- components : { InputField }
112+ template : '<div><form -field type = "number" name = "age" step = "10"/></div>' ,
113+ components : { FormField }
108114 } ) )
109115
110116 const form = wrap . vm . form as Form ;
@@ -122,8 +128,8 @@ describe("Input number", () => {
122128 test ( "If suffix was provided it should be displayed" , async ( ) => {
123129
124130 wrap = defaultMount ( defineComponent ( {
125- template : '<div><input -field type = "number" name = "age" suffix = "Years"/></div>' ,
126- components : { InputField }
131+ template : '<div><form -field type = "number" name = "age" suffix = "Years"/></div>' ,
132+ components : { FormField }
127133 } ) )
128134
129135 await wrap . vm . $nextTick ( ) ;
@@ -138,8 +144,8 @@ describe("Input number", () => {
138144 ] ;
139145
140146 wrap = defaultMount ( defineComponent ( {
141- template : `<div><input -field type = "number" name = "age" :validation = "${ test } " /></div>` ,
142- components : { InputField }
147+ template : `<div><form -field type = "number" name = "age" :validation = "${ test } " /></div>` ,
148+ components : { FormField }
143149 } ) )
144150 const form = wrap . vm . form as Form ;
145151 await wrap . vm . $nextTick ( ) ;
@@ -163,5 +169,34 @@ describe("Input number", () => {
163169 await wrap . vm . $nextTick ( )
164170 expect ( wrap . text ( ) ) . toBe ( '' )
165171 } )
172+ test ( "If pretty was provided it should change input" , async ( ) => {
173+ function prettyFn ( v ?: string | number ) {
174+ if ( v === undefined ) return ''
175+
176+ return `- ${ v } _`
177+ }
178+
179+ const app = defaultMount ( defineComponent ( {
180+ setup ( ) {
181+ return {
182+ prettyFn
183+ }
184+ } ,
185+ template : `<div><form-field type = "number" name = "${ name } " required label = "Numeric" :pretty = "prettyFn" /></div>` ,
186+ components : { FormField}
187+ } ) )
188+ const form = ( app . vm as any ) . form as Form ;
189+ const input = app . find ( 'input' )
190+ expect ( input . element . value ) . toBe ( "" ) ;
191+
192+ form . setValues ( {
193+ [ name ] : 123
194+ } )
195+ await app . vm . $nextTick ( )
196+ expect ( input . element . value ) . toBe ( prettyFn ( '123' ) )
166197
198+ await input . setValue ( 321 ) ;
199+ expect ( input . element . value ) . toBe ( prettyFn ( '321' ) )
200+
201+ } )
167202} )
0 commit comments