@@ -684,6 +684,113 @@ describe('renderForm function', () => {
684
684
wrapper . update ( ) ;
685
685
expect ( wrapper . find ( Form ) . instance ( ) . form . getState ( ) . values . unmnounted ) . toEqual ( undefined ) ;
686
686
} ) ;
687
+
688
+ it ( 'should clear values after unmount and set to field cleared value' , ( ) => {
689
+ layoutMapper = {
690
+ ...layoutMapper ,
691
+ [ layoutComponents . FORM_WRAPPER ] : ( { children, ...props } ) => < form { ...props } > { children } </ form > ,
692
+ } ;
693
+
694
+ const schema = {
695
+ fields : [ {
696
+ component : components . TEXT_FIELD ,
697
+ name : 'foo' ,
698
+ } , {
699
+ component : components . TEXT_FIELD ,
700
+ name : 'unmnounted' ,
701
+ label : 'Label 1' ,
702
+ clearedValue : 'bla' ,
703
+ clearOnUnmount : true ,
704
+ condition : {
705
+ when : 'foo' ,
706
+ is : 'show' ,
707
+ } ,
708
+ } ] } ;
709
+
710
+ const onSubmit = jest . fn ( ) ;
711
+
712
+ const wrapper = mount (
713
+ < FormRenderer
714
+ layoutMapper = { layoutMapper }
715
+ formFieldsMapper = { {
716
+ [ components . TEXT_FIELD ] : TextField ,
717
+ } }
718
+ schema = { schema }
719
+ onSubmit = { ( values ) => onSubmit ( values ) }
720
+ clearedValue = "BlaBlaBla"
721
+ />
722
+ ) ;
723
+
724
+ wrapper . find ( 'input' ) . first ( ) . simulate ( 'change' , { target : { value : 'show' } } ) ;
725
+ wrapper . update ( ) ;
726
+ wrapper . find ( 'input' ) . last ( ) . simulate ( 'change' , { target : { value : 'foovalue' } } ) ;
727
+ wrapper . update ( ) ;
728
+
729
+ wrapper . find ( 'form' ) . simulate ( 'submit' ) ;
730
+
731
+ expect ( onSubmit ) . toHaveBeenCalledWith ( { foo : 'show' , unmnounted : 'foovalue' } ) ;
732
+ onSubmit . mockClear ( ) ;
733
+
734
+ wrapper . find ( 'input' ) . first ( ) . simulate ( 'change' , { target : { value : 'barrr' } } ) ;
735
+ wrapper . update ( ) ;
736
+
737
+ wrapper . find ( 'form' ) . simulate ( 'submit' ) ;
738
+
739
+ expect ( onSubmit ) . toHaveBeenCalledWith ( { foo : 'barrr' , unmnounted : 'bla' } ) ;
740
+ } ) ;
741
+
742
+ it ( 'should clear values after unmount and set to form cleared value' , ( ) => {
743
+ layoutMapper = {
744
+ ...layoutMapper ,
745
+ [ layoutComponents . FORM_WRAPPER ] : ( { children, ...props } ) => < form { ...props } > { children } </ form > ,
746
+ } ;
747
+
748
+ const schema = {
749
+ fields : [ {
750
+ component : components . TEXT_FIELD ,
751
+ name : 'foo' ,
752
+ } , {
753
+ component : components . TEXT_FIELD ,
754
+ name : 'unmnounted' ,
755
+ label : 'Label 1' ,
756
+ clearOnUnmount : true ,
757
+ condition : {
758
+ when : 'foo' ,
759
+ is : 'show' ,
760
+ } ,
761
+ } ] } ;
762
+
763
+ const onSubmit = jest . fn ( ) ;
764
+
765
+ const wrapper = mount (
766
+ < FormRenderer
767
+ layoutMapper = { layoutMapper }
768
+ formFieldsMapper = { {
769
+ [ components . TEXT_FIELD ] : TextField ,
770
+ } }
771
+ schema = { schema }
772
+ onSubmit = { ( values ) => onSubmit ( values ) }
773
+ clearedValue = "BlaBlaBla"
774
+ />
775
+ ) ;
776
+
777
+ wrapper . find ( 'input' ) . first ( ) . simulate ( 'change' , { target : { value : 'show' } } ) ;
778
+ wrapper . update ( ) ;
779
+ wrapper . find ( 'input' ) . last ( ) . simulate ( 'change' , { target : { value : 'foovalue' } } ) ;
780
+ wrapper . update ( ) ;
781
+
782
+ wrapper . find ( 'form' ) . simulate ( 'submit' ) ;
783
+
784
+ expect ( onSubmit ) . toHaveBeenCalledWith ( { foo : 'show' , unmnounted : 'foovalue' } ) ;
785
+ onSubmit . mockClear ( ) ;
786
+
787
+ wrapper . find ( 'input' ) . first ( ) . simulate ( 'change' , { target : { value : 'barrr' } } ) ;
788
+ wrapper . update ( ) ;
789
+
790
+ wrapper . find ( 'form' ) . simulate ( 'submit' ) ;
791
+
792
+ expect ( onSubmit ) . toHaveBeenCalledWith ( { foo : 'barrr' , unmnounted : 'BlaBlaBla' } ) ;
793
+ } ) ;
687
794
} ) ;
688
795
689
796
describe ( '#formSpy' , ( ) => {
0 commit comments