@@ -19,19 +19,23 @@ function createField2(data, methods) {
19
19
20
20
describe ( "fieldSubmit.vue" , ( ) => {
21
21
describe ( "check template" , ( ) => {
22
+ let vfg = { } ;
22
23
let schema = {
23
24
type : "submit" ,
24
25
buttonText : "Submit form" ,
25
26
inputName : "" ,
26
27
validateBeforeSubmit : false ,
27
- onSubmit ( ) { } ,
28
+ onSubmit : sinon . spy ( ) ,
28
29
fieldClasses : [ "applied-class" , "another-class" ]
29
30
} ;
31
+ let formOptions = {
32
+ validateAsync : false
33
+ } ;
30
34
let model = { name : "John Doe" } ;
31
35
let input ;
32
36
33
37
before ( ( ) => {
34
- createField2 ( { schema, model, disabled : false } ) ;
38
+ createField2 ( { vfg , schema, formOptions , model, disabled : false } ) ;
35
39
input = wrapper . find ( "input" ) ;
36
40
} ) ;
37
41
@@ -43,43 +47,89 @@ describe("fieldSubmit.vue", () => {
43
47
} ) ;
44
48
45
49
describe ( "valid form" , ( ) => {
46
- it . skip ( "should not call validate if validateBeforeSubmit is false" , ( ) => {
47
- schema . onSubmit = sinon . spy ( ) ;
48
- let cb = sinon . spy ( ) ;
49
- wrapper . vm . $parent . validate = cb ;
50
+ before ( ( ) => {
51
+ vfg . validate = ( ) => true ;
52
+ sinon . spy ( vfg , "validate" ) ;
53
+ } ) ;
54
+
55
+ afterEach ( ( ) => {
56
+ schema . onSubmit . resetHistory ( ) ;
57
+ vfg . validate . resetHistory ( ) ;
58
+ } ) ;
59
+
60
+ it ( "should not call validate but should call onSubmit if validateBeforeSubmit is false" , ( ) => {
61
+ input . trigger ( "click" ) ;
50
62
51
- input . click ( ) ;
52
- expect ( cb . called ) . to . be . false ;
63
+ expect ( vfg . validate . notCalled ) . to . be . true ;
53
64
expect ( schema . onSubmit . calledOnce ) . to . be . true ;
54
65
expect ( schema . onSubmit . calledWith ( model , schema ) ) . to . be . true ;
55
66
} ) ;
56
67
57
- it . skip ( "should call validate if validateBeforeSubmit is true" , ( ) => {
68
+ it ( "should call validate and onSubmit if validateBeforeSubmit is true" , ( ) => {
58
69
schema . validateBeforeSubmit = true ;
59
- schema . onSubmit = sinon . spy ( ) ;
60
- let cb = sinon . spy ( ) ;
61
- wrapper . vm . $parent . validate = cb ;
62
70
63
71
input . trigger ( "click" ) ;
64
72
65
- expect ( cb . called ) . to . be . true ;
73
+ expect ( vfg . validate . called ) . to . be . true ;
66
74
expect ( schema . onSubmit . called ) . to . be . true ;
67
75
} ) ;
68
76
} ) ;
69
77
70
78
describe ( "invalid form" , ( ) => {
71
- it . skip ( "should not call onSubmit if validateBeforeSubmit is true" , ( ) => {
79
+ before ( ( ) => {
80
+ vfg . validate = ( ) => false ;
81
+ sinon . spy ( vfg , "validate" ) ;
82
+ } ) ;
83
+
84
+ afterEach ( ( ) => {
85
+ schema . onSubmit . resetHistory ( ) ;
86
+ vfg . validate . resetHistory ( ) ;
87
+ } ) ;
88
+
89
+ it ( "should call validate but should not call onSubmit if validateBeforeSubmit is true" , ( ) => {
72
90
schema . validateBeforeSubmit = true ;
91
+
92
+ input . trigger ( "click" ) ;
93
+
94
+ expect ( vfg . validate . called ) . to . be . true ;
95
+ expect ( schema . onSubmit . notCalled ) . to . be . true ;
96
+ } ) ;
97
+ } ) ;
98
+
99
+ describe ( "async validate" , ( ) => {
100
+ before ( ( ) => {
101
+ formOptions . validateAsync = true ;
102
+ vfg . validate = sinon . stub ( ) ;
73
103
schema . onSubmit = sinon . spy ( ) ;
74
- let cb = sinon . spy ( ( ) => {
75
- return [ "an error occurred" ] ;
104
+ } ) ;
105
+
106
+ afterEach ( ( ) => {
107
+ vfg . validate . reset ( ) ;
108
+ schema . onSubmit . resetHistory ( ) ;
109
+ } ) ;
110
+
111
+ describe ( "valid form" , ( ) => {
112
+ it ( "should call validate and onSubmit if validateBeforeSubmit is true" , async function ( ) {
113
+ schema . validateBeforeSubmit = true ;
114
+ vfg . validate . resolves ( [ ] ) ;
115
+
116
+ await input . trigger ( "click" ) ;
117
+
118
+ expect ( vfg . validate . called ) . to . be . true ;
119
+ expect ( schema . onSubmit . called ) . to . be . true ;
76
120
} ) ;
77
- wrapper . vm . $parent . validate = cb ;
121
+ } ) ;
78
122
79
- input . trigger ( "click" ) ;
123
+ describe ( "invalid form" , ( ) => {
124
+ it ( "should call validate but should not call onSubmit if validateBeforeSubmit is true" , async function ( ) {
125
+ schema . validateBeforeSubmit = true ;
126
+ vfg . validate . resolves ( [ "Error" ] ) ;
80
127
81
- expect ( cb . called ) . to . be . true ;
82
- expect ( schema . onSubmit . called ) . to . be . true ;
128
+ await input . trigger ( "click" ) ;
129
+
130
+ expect ( vfg . validate . called ) . to . be . true ;
131
+ expect ( schema . onSubmit . notCalled ) . to . be . true ;
132
+ } ) ;
83
133
} ) ;
84
134
} ) ;
85
135
0 commit comments