11import React from 'react' ;
2- import { FormRenderer } from '@data-driven-forms/react-form-renderer' ;
2+ import { act } from 'react-dom/test-utils' ;
3+ import { FormRenderer , FormError } from '@data-driven-forms/react-form-renderer' ;
34import { mount } from 'enzyme' ;
45import { Typography } from '@material-ui/core' ;
6+ import Alert from '@material-ui/lab/Alert' ;
7+ import AlertTitle from '@material-ui/lab/AlertTitle' ;
58
69import { componentMapper , FormTemplate } from '../' ;
710
@@ -26,4 +29,85 @@ describe('<FormTemplate />', () => {
2629
2730 expect ( wrapper . find ( Typography ) . text ( ) ) . toEqual ( 'Some title' ) ;
2831 } ) ;
32+
33+ it ( 'show form alert message' , async ( ) => {
34+ const wrapper = mount (
35+ < FormRenderer
36+ schema = { {
37+ fields : [
38+ {
39+ component : 'text-field' ,
40+ name : 'field'
41+ }
42+ ]
43+ } }
44+ validate = { ( { field } ) => {
45+ if ( field ) {
46+ return { [ FormError ] : 'some error title' } ;
47+ }
48+ } }
49+ onSubmit = { jest . fn ( ) }
50+ FormTemplate = { FormTemplate }
51+ componentMapper = { componentMapper }
52+ />
53+ ) ;
54+
55+ expect ( wrapper . find ( Alert ) ) . toHaveLength ( 0 ) ;
56+
57+ await act ( async ( ) => {
58+ wrapper
59+ . find ( 'input' )
60+ . first ( )
61+ . instance ( ) . value = 'cats' ;
62+ wrapper
63+ . find ( 'input' )
64+ . first ( )
65+ . simulate ( 'change' ) ;
66+ } ) ;
67+ wrapper . update ( ) ;
68+
69+ expect ( wrapper . find ( Alert ) ) . toHaveLength ( 1 ) ;
70+ expect ( wrapper . find ( Alert ) . text ( ) ) . toEqual ( 'some error title' ) ;
71+ } ) ;
72+
73+ it ( 'show form alert message as object' , async ( ) => {
74+ const wrapper = mount (
75+ < FormRenderer
76+ schema = { {
77+ fields : [
78+ {
79+ component : 'text-field' ,
80+ name : 'field'
81+ }
82+ ]
83+ } }
84+ validate = { ( { field } ) => {
85+ if ( field ) {
86+ return { [ FormError ] : { title : 'some error title' , description : 'some description' } } ;
87+ }
88+ } }
89+ onSubmit = { jest . fn ( ) }
90+ FormTemplate = { FormTemplate }
91+ componentMapper = { componentMapper }
92+ />
93+ ) ;
94+
95+ expect ( wrapper . find ( Alert ) ) . toHaveLength ( 0 ) ;
96+
97+ await act ( async ( ) => {
98+ wrapper
99+ . find ( 'input' )
100+ . first ( )
101+ . instance ( ) . value = 'cats' ;
102+ wrapper
103+ . find ( 'input' )
104+ . first ( )
105+ . simulate ( 'change' ) ;
106+ } ) ;
107+ wrapper . update ( ) ;
108+
109+ expect ( wrapper . find ( Alert ) ) . toHaveLength ( 1 ) ;
110+ expect ( wrapper . find ( AlertTitle ) . text ( ) ) . toEqual ( 'some error title' ) ;
111+ expect ( wrapper . find ( Alert ) . text ( ) ) . toEqual ( 'some error titlesome description' ) ;
112+ } ) ;
29113} ) ;
0 commit comments