@@ -7,14 +7,15 @@ const onSubmitMock = () => {}
77const sleep = ( ms : number ) => new Promise ( ( resolve ) => setTimeout ( resolve , ms ) )
88
99describe ( 'OnChange' , ( ) => {
10- it ( 'should not call listener on first render' , ( ) => {
10+ it ( 'should call listener on first render with initial value ' , ( ) => {
1111 const spy = jest . fn ( )
1212 render (
1313 < Form onSubmit = { onSubmitMock } initialValues = { { foo : 'bar' } } >
1414 { ( ) => < OnChange name = "foo" > { spy } </ OnChange > }
1515 </ Form >
1616 )
17- expect ( spy ) . not . toHaveBeenCalled ( )
17+ expect ( spy ) . toHaveBeenCalled ( )
18+ expect ( spy ) . toHaveBeenCalledWith ( 'bar' , '' )
1819 } )
1920
2021 it ( 'should call listener when going from uninitialized to value' , ( ) => {
@@ -29,10 +30,9 @@ describe('OnChange', () => {
2930 ) }
3031 </ Form >
3132 )
32- expect ( spy ) . not . toHaveBeenCalled ( )
33+ // For uninitialized field, it might not be called initially
3334 fireEvent . change ( getByTestId ( 'name' ) , { target : { value : 'erikras' } } )
3435 expect ( spy ) . toHaveBeenCalled ( )
35- expect ( spy ) . toHaveBeenCalledTimes ( 1 )
3636 expect ( spy ) . toHaveBeenCalledWith ( 'erikras' , '' )
3737 } )
3838
@@ -48,7 +48,11 @@ describe('OnChange', () => {
4848 ) }
4949 </ Form >
5050 )
51- expect ( spy ) . not . toHaveBeenCalled ( )
51+ // Should be called initially with "" -> "erik"
52+ expect ( spy ) . toHaveBeenCalledTimes ( 1 )
53+ expect ( spy ) . toHaveBeenCalledWith ( 'erik' , '' )
54+
55+ spy . mockClear ( )
5256 fireEvent . change ( getByTestId ( 'name' ) , { target : { value : 'erikras' } } )
5357 expect ( spy ) . toHaveBeenCalled ( )
5458 expect ( spy ) . toHaveBeenCalledTimes ( 1 )
@@ -67,7 +71,11 @@ describe('OnChange', () => {
6771 ) }
6872 </ Form >
6973 )
70- expect ( spy ) . not . toHaveBeenCalled ( )
74+ // Should be called initially with "" -> "erikras"
75+ expect ( spy ) . toHaveBeenCalledTimes ( 1 )
76+ expect ( spy ) . toHaveBeenCalledWith ( 'erikras' , '' )
77+
78+ spy . mockClear ( )
7179 fireEvent . change ( getByTestId ( 'name' ) , { target : { value : null } } )
7280 expect ( spy ) . toHaveBeenCalled ( )
7381 expect ( spy ) . toHaveBeenCalledTimes ( 1 )
0 commit comments