@@ -4,6 +4,8 @@ import AppBar from '@material-ui/core/AppBar';
4
4
import Tabs from '@material-ui/core/Tabs' ;
5
5
import Tab from '@material-ui/core/Tab' ;
6
6
7
+ import FormRenderer , { validatorTypes } from '@data-driven-forms/react-form-renderer' ;
8
+ import { formFieldsMapper , layoutMapper } from '../index' ;
7
9
import FormTabs from '../form-fields/tabs' ;
8
10
9
11
describe ( 'tabs' , ( ) => {
@@ -31,7 +33,7 @@ describe('tabs', () => {
31
33
expect ( wrapper . find ( AppBar ) ) . toHaveLength ( 1 ) ;
32
34
expect ( wrapper . find ( Tabs ) ) . toHaveLength ( 1 ) ;
33
35
expect ( wrapper . find ( Tab ) ) . toHaveLength ( 2 ) ;
34
- expect ( wrapper . find ( 'h1' ) ) . toHaveLength ( 1 ) ;
36
+ expect ( wrapper . find ( 'h1' ) ) . toHaveLength ( 2 ) ;
35
37
} ) ;
36
38
37
39
it ( 'should switch tabs correctly' , ( ) => {
@@ -43,4 +45,50 @@ describe('tabs', () => {
43
45
44
46
expect ( wrapper . instance ( ) . state . activeTab ) . toEqual ( 1 ) ;
45
47
} ) ;
48
+
49
+ it ( 'validate all tabs' , ( ) => {
50
+ const onSubmit = jest . fn ( ) ;
51
+ const wrapper = mount ( < FormRenderer
52
+ formFieldsMapper = { formFieldsMapper }
53
+ layoutMapper = { layoutMapper }
54
+ onSubmit = { ( values ) => onSubmit ( values ) }
55
+ schema = { { fields : [ {
56
+ component : 'tabs' ,
57
+ name : 'tabs1' ,
58
+ title : 'tabs1' ,
59
+ fields : [ {
60
+ name : 'tabitem1' ,
61
+ component : 'tab-item' ,
62
+ fields : [ {
63
+ component : 'text-field' ,
64
+ name : 'name' ,
65
+ validate : [ { type : validatorTypes . REQUIRED } ] ,
66
+ } ] ,
67
+ } , {
68
+ name : 'tabitem2' ,
69
+ component : 'tab-item' ,
70
+ fields : [ {
71
+ component : 'text-field' ,
72
+ name : 'password' ,
73
+ validate : [ { type : validatorTypes . REQUIRED } ] ,
74
+ } ] ,
75
+ } ] ,
76
+ } ] } }
77
+ /> ) ;
78
+
79
+ wrapper . find ( 'input' ) . first ( ) . simulate ( 'change' , { target : { value : 'NAME' } } ) ;
80
+ wrapper . update ( ) ;
81
+
82
+ wrapper . find ( 'form' ) . simulate ( 'submit' ) ;
83
+ wrapper . update ( ) ;
84
+
85
+ expect ( onSubmit ) . not . toHaveBeenCalled ( ) ;
86
+
87
+ wrapper . find ( 'input' ) . last ( ) . simulate ( 'change' , { target : { value : 'PASSWORD' } } ) ;
88
+ wrapper . update ( ) ;
89
+
90
+ wrapper . find ( 'form' ) . simulate ( 'submit' ) ;
91
+
92
+ expect ( onSubmit ) . toHaveBeenCalledWith ( { name : 'NAME' , password : 'PASSWORD' } ) ;
93
+ } ) ;
46
94
} ) ;
0 commit comments