@@ -250,40 +250,63 @@ describe('Form.Validate', () => {
250
250
await timeout ( ) ;
251
251
expect ( form . getFieldError ( 'test' ) ) . toEqual ( [ "'test' is required" ] ) ;
252
252
} ) ;
253
- } ) ;
254
253
255
- it ( 'change validateTrigger' , async ( ) => {
256
- let form ;
254
+ it ( 'change validateTrigger' , async ( ) => {
255
+ let form ;
257
256
258
- const Test = ( { init = false } ) => (
259
- < Form
260
- ref = { instance => {
261
- form = instance ;
262
- } }
263
- >
264
- < Field
265
- name = "title"
266
- validateTrigger = { init ? 'onChange' : 'onBlur' }
267
- rules = { [
268
- { required : true , message : 'Title is required' } ,
269
- { min : 3 , message : 'Title should be 3+ characters' } ,
270
- ] }
257
+ const Test = ( { init = false } ) => (
258
+ < Form
259
+ ref = { instance => {
260
+ form = instance ;
261
+ } }
271
262
>
272
- < Input />
273
- </ Field >
274
- </ Form >
275
- ) ;
263
+ < Field
264
+ name = "title"
265
+ validateTrigger = { init ? 'onChange' : 'onBlur' }
266
+ rules = { [
267
+ { required : true , message : 'Title is required' } ,
268
+ { min : 3 , message : 'Title should be 3+ characters' } ,
269
+ ] }
270
+ >
271
+ < Input />
272
+ </ Field >
273
+ </ Form >
274
+ ) ;
276
275
277
- const wrapper = mount ( < Test /> ) ;
276
+ const wrapper = mount ( < Test /> ) ;
278
277
279
- getField ( wrapper ) . simulate ( 'blur' ) ;
280
- await timeout ( ) ;
281
- expect ( form . getFieldError ( 'title' ) ) . toEqual ( [ 'Title is required' ] ) ;
278
+ getField ( wrapper ) . simulate ( 'blur' ) ;
279
+ await timeout ( ) ;
280
+ expect ( form . getFieldError ( 'title' ) ) . toEqual ( [ 'Title is required' ] ) ;
282
281
283
- wrapper . setProps ( { init : true } ) ;
284
- await changeValue ( getField ( wrapper ) , '1' ) ;
285
- expect ( form . getFieldValue ( 'title' ) ) . toBe ( '1' ) ;
286
- expect ( form . getFieldError ( 'title' ) ) . toEqual ( [ 'Title should be 3+ characters' ] ) ;
282
+ wrapper . setProps ( { init : true } ) ;
283
+ await changeValue ( getField ( wrapper ) , '1' ) ;
284
+ expect ( form . getFieldValue ( 'title' ) ) . toBe ( '1' ) ;
285
+ expect ( form . getFieldError ( 'title' ) ) . toEqual ( [ 'Title should be 3+ characters' ] ) ;
286
+ } ) ;
287
+
288
+ it ( 'form context' , async ( ) => {
289
+ const wrapper = mount (
290
+ < Form validateTrigger = "onBlur" >
291
+ < InfoField name = "test" rules = { [ { required : true } ] } />
292
+ </ Form > ,
293
+ ) ;
294
+
295
+ // Not trigger validate since Form set `onBlur`
296
+ await changeValue ( getField ( wrapper ) , '' ) ;
297
+ matchError ( wrapper , false ) ;
298
+
299
+ // Trigger onBlur
300
+ wrapper . find ( 'input' ) . simulate ( 'blur' ) ;
301
+ await timeout ( ) ;
302
+ wrapper . update ( ) ;
303
+ matchError ( wrapper , true ) ;
304
+
305
+ // Update Form context
306
+ wrapper . setProps ( { validateTrigger : 'onChange' } ) ;
307
+ await changeValue ( getField ( wrapper ) , '1' ) ;
308
+ matchError ( wrapper , false ) ;
309
+ } ) ;
287
310
} ) ;
288
311
289
312
describe ( 'validate only accept exist fields' , ( ) => {
0 commit comments