@@ -4,6 +4,8 @@ import AppBar from '@material-ui/core/AppBar';
44import Tabs from '@material-ui/core/Tabs' ;
55import Tab from '@material-ui/core/Tab' ;
66
7+ import FormRenderer , { validatorTypes } from '@data-driven-forms/react-form-renderer' ;
8+ import { formFieldsMapper , layoutMapper } from '../index' ;
79import FormTabs from '../form-fields/tabs' ;
810
911describe ( 'tabs' , ( ) => {
@@ -31,7 +33,7 @@ describe('tabs', () => {
3133 expect ( wrapper . find ( AppBar ) ) . toHaveLength ( 1 ) ;
3234 expect ( wrapper . find ( Tabs ) ) . toHaveLength ( 1 ) ;
3335 expect ( wrapper . find ( Tab ) ) . toHaveLength ( 2 ) ;
34- expect ( wrapper . find ( 'h1' ) ) . toHaveLength ( 1 ) ;
36+ expect ( wrapper . find ( 'h1' ) ) . toHaveLength ( 2 ) ;
3537 } ) ;
3638
3739 it ( 'should switch tabs correctly' , ( ) => {
@@ -43,4 +45,50 @@ describe('tabs', () => {
4345
4446 expect ( wrapper . instance ( ) . state . activeTab ) . toEqual ( 1 ) ;
4547 } ) ;
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+ } ) ;
4694} ) ;
0 commit comments