1
- import React , { useState } from 'react' ;
1
+ import React , { useEffect , useState } from 'react' ;
2
2
import { render } from '@testing-library/react-native' ;
3
3
import Constants from '../../../commons/Constants' ;
4
4
import Assets from '../../../assets' ;
@@ -15,14 +15,19 @@ const helperText = 'Helper Text';
15
15
16
16
function TestCase ( textFieldProps ?: TextFieldProps ) {
17
17
const [ value , setValue ] = useState ( textFieldProps ?. value ) ;
18
+
19
+ useEffect ( ( ) => {
20
+ setValue ( textFieldProps ?. value ) ;
21
+ } , [ textFieldProps ?. value ] ) ;
22
+
18
23
return (
19
24
< View >
20
25
< TextField { ...textFieldProps } testID = { TEXT_FIELD_TEST_ID } value = { value } onChangeText = { setValue } />
21
26
</ View >
22
27
) ;
23
28
}
24
29
25
- const validate = jest . fn ( ( value : string ) => {
30
+ const validate = jest . fn ( ( value ? : string ) => {
26
31
return ! ! value ;
27
32
} ) ;
28
33
@@ -214,6 +219,18 @@ describe('TextField', () => {
214
219
expect ( textFieldDriver . getValidationMessage ( ) . getText ( ) ) . toEqual ( 'mock message' ) ;
215
220
} ) ;
216
221
222
+ it ( 'should render validationMessage when input is requires after changing the value to undefined' , ( ) => {
223
+ const renderTree = render ( < TestCase { ...defaultProps } value = { 'Some text' } validate = { 'required' } validationMessage = { 'mock message' } enableErrors validateOnChange /> ) ;
224
+ const textFieldDriver = TextFieldDriver ( { renderTree, testID : TEXT_FIELD_TEST_ID } ) ;
225
+
226
+ expect ( textFieldDriver . getValidationMessage ( ) . exists ( ) ) . toBe ( false ) ;
227
+ expect ( textFieldDriver . getValidationMessage ( ) . getText ( ) ) . toEqual ( '' ) ;
228
+
229
+ renderTree . rerender ( < TestCase { ...defaultProps } validate = { 'required' } validationMessage = { 'mock message' } enableErrors validateOnChange /> ) ;
230
+ expect ( textFieldDriver . getValidationMessage ( ) . exists ( ) ) . toBe ( true ) ;
231
+ expect ( textFieldDriver . getValidationMessage ( ) . getText ( ) ) . toEqual ( 'mock message' ) ;
232
+ } ) ;
233
+
217
234
it ( 'should display validation error message when validation fail after blur' , ( ) => {
218
235
const renderTree = render ( < TestCase { ...defaultProps } validate = { 'email' } validationMessage = { 'email is invalid' } enableErrors validateOnBlur /> ) ;
219
236
const textFieldDriver = TextFieldDriver ( { renderTree, testID : TEXT_FIELD_TEST_ID } ) ;
@@ -490,7 +507,7 @@ describe('TextField', () => {
490
507
const props = {
491
508
...defaultProps ,
492
509
value : '10000' ,
493
- formatter : value => priceFormatter . format ( Number ( value ) )
510
+ formatter : ( value ?: string ) => priceFormatter . format ( Number ( value ) )
494
511
} ;
495
512
496
513
it ( 'should format value while not focused based on formatter prop' , ( ) => {
0 commit comments