1
1
import _ from 'lodash' ;
2
+ import { StyleSheet } from 'react-native' ;
2
3
import { fireEvent } from '@testing-library/react-native' ;
3
4
import { useComponentDriver , ComponentProps } from '../../testkit/new/Component.driver' ;
4
- import { TextDriver } from '../text/Text.driver.new' ;
5
5
import { usePressableDriver } from '../../testkit/new/usePressable.driver' ;
6
+ import { TextDriver } from '../text/Text.driver.new' ;
7
+ import { ImageDriver } from '../image/Image.driver.new' ;
8
+ import { ButtonDriver } from '../button/Button.driver.new' ;
9
+ import { ViewDriver } from '../view/View.driver.new' ;
6
10
7
11
export const TextFieldDriver = ( props : ComponentProps ) => {
8
12
const driver = usePressableDriver ( useComponentDriver ( props ) ) ;
@@ -23,6 +27,22 @@ export const TextFieldDriver = (props: ComponentProps) => {
23
27
renderTree : props . renderTree ,
24
28
testID : `${ props . testID } .charCounter`
25
29
} ) ;
30
+ const helperTextDriver = TextDriver ( {
31
+ renderTree : props . renderTree ,
32
+ testID : `${ props . testID } .helperText`
33
+ } ) ;
34
+ const validationIconDriver = ImageDriver ( {
35
+ renderTree : props . renderTree ,
36
+ testID : `${ props . testID } .validationMessage.icon`
37
+ } ) ;
38
+ const clearButtonDriver = ButtonDriver ( {
39
+ renderTree : props . renderTree ,
40
+ testID : `${ props . testID } .clearButton`
41
+ } ) ;
42
+ const clearButtonContainerDriver = ViewDriver ( {
43
+ renderTree : props . renderTree ,
44
+ testID : `${ props . testID } .clearButton.container`
45
+ } ) ;
26
46
27
47
const getValue = ( ) : string | undefined => {
28
48
return driver . getElement ( ) . props . value ?? driver . getElement ( ) . props . defaultValue ;
@@ -79,6 +99,24 @@ export const TextFieldDriver = (props: ComponentProps) => {
79
99
return charCounterDriver ;
80
100
} ;
81
101
102
+ const getHelperText = ( ) => {
103
+ return helperTextDriver ;
104
+ } ;
105
+
106
+ const getValidationIcon = ( ) => {
107
+ return validationIconDriver ;
108
+ } ;
109
+
110
+ const getClearButton = ( ) => {
111
+ const visible = ( ) : boolean => {
112
+ const transform = StyleSheet . flatten ( clearButtonContainerDriver . getStyle ( ) ) . transform ;
113
+ const translate = StyleSheet . flatten ( transform ) ;
114
+ const translateX = translate . translateX ;
115
+ return translateX === 0 ;
116
+ } ;
117
+ return { ...clearButtonDriver , visible} ;
118
+ } ;
119
+
82
120
return {
83
121
...driver ,
84
122
getValue,
@@ -89,6 +127,9 @@ export const TextFieldDriver = (props: ComponentProps) => {
89
127
getPlaceholder,
90
128
getLabel,
91
129
getValidationMessage,
92
- getCharCounter
130
+ getCharCounter,
131
+ getHelperText,
132
+ getValidationIcon,
133
+ getClearButton
93
134
} ;
94
135
} ;
0 commit comments