@@ -98,14 +98,11 @@ describe('Textarea', () => {
9898 } ) ;
9999
100100 test ( 'tracks changes with "value" prop' , ( ) => {
101- fireEvent . change ( textarea , {
102- target : { value : 'some-textarea-value' }
103- } ) ;
104- expect ( mockSetProps . mock . calls ) . toHaveLength ( 1 ) ;
105- expect ( mockSetProps . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
106- value : 'some-textarea-value'
107- } ) ;
108- expect ( textarea ) . toHaveValue ( 'some-textarea-value' ) ;
101+ userEvent . type ( textarea , 'some text' ) ;
102+ // one setProps call for click, and then 9 characters
103+ expect ( mockSetProps . mock . calls ) . toHaveLength ( 10 ) ;
104+ expect ( mockSetProps . mock . calls [ 9 ] [ 0 ] ) . toEqual ( { value : 'some text' } ) ;
105+ expect ( textarea ) . toHaveValue ( 'some text' ) ;
109106 } ) ;
110107
111108 test ( 'dispatches update for each typed character' , ( ) => {
@@ -160,55 +157,48 @@ describe('Textarea', () => {
160157 beforeEach ( ( ) => {
161158 mockSetProps = jest . fn ( ) ;
162159 const { container} = render (
163- < Textarea
164- setProps = { mockSetProps }
165- value = "some-textarea-value"
166- debounce
167- />
160+ < Textarea setProps = { mockSetProps } value = "" debounce />
168161 ) ;
169162 textarea = container . firstChild ;
170163 } ) ;
171164
172165 test ( "don't call setProps on change if debounce is true" , ( ) => {
173- fireEvent . change ( textarea , {
174- target : { value : 'some-textarea-value' }
175- } ) ;
176- expect ( mockSetProps . mock . calls ) . toHaveLength ( 0 ) ;
177- expect ( textarea ) . toHaveValue ( 'some-textarea-value' ) ;
166+ userEvent . type ( textarea , 'some text' ) ;
167+ // one call to setProps for clicking on the textarea
168+ expect ( mockSetProps . mock . calls ) . toHaveLength ( 1 ) ;
169+ expect ( textarea ) . toHaveValue ( 'some text' ) ;
178170 } ) ;
179171
180172 test ( 'dispatch value on blur if debounce is true' , ( ) => {
173+ userEvent . type ( textarea , 'some text' ) ;
181174 const before = Date . now ( ) ;
182175 fireEvent . blur ( textarea ) ;
183176 const after = Date . now ( ) ;
184177
185- expect ( mockSetProps . mock . calls ) . toHaveLength ( 1 ) ;
178+ expect ( mockSetProps . mock . calls ) . toHaveLength ( 2 ) ;
186179
187- const [ [ { n_blur, n_blur_timestamp, value} ] ] = mockSetProps . mock . calls ;
180+ const [ { n_blur, n_blur_timestamp, value} ] = mockSetProps . mock . calls [ 1 ] ;
188181 expect ( n_blur ) . toEqual ( 1 ) ;
189182 expect ( n_blur_timestamp ) . toBeGreaterThanOrEqual ( before ) ;
190183 expect ( n_blur_timestamp ) . toBeLessThanOrEqual ( after ) ;
191- expect ( value ) . toEqual ( 'some-textarea-value ' ) ;
184+ expect ( value ) . toEqual ( 'some text ' ) ;
192185 } ) ;
193186
194187 test ( 'dispatch value on submit if debounce is true' , ( ) => {
195188 const before = Date . now ( ) ;
196- fireEvent . keyPress ( textarea , {
197- key : 'Enter' ,
198- code : 13 ,
199- charCode : 13
200- } ) ;
189+ userEvent . type ( textarea , 'some text{enter}' ) ;
201190 const after = Date . now ( ) ;
202191
203- expect ( mockSetProps . mock . calls ) . toHaveLength ( 1 ) ;
192+ // one click and one submit
193+ expect ( mockSetProps . mock . calls ) . toHaveLength ( 2 ) ;
204194
205195 const [
206- [ { n_submit, n_submit_timestamp, value} ]
207- ] = mockSetProps . mock . calls ;
196+ { n_submit, n_submit_timestamp, value}
197+ ] = mockSetProps . mock . calls [ 1 ] ;
208198 expect ( n_submit ) . toEqual ( 1 ) ;
209199 expect ( n_submit_timestamp ) . toBeGreaterThanOrEqual ( before ) ;
210200 expect ( n_submit_timestamp ) . toBeLessThanOrEqual ( after ) ;
211- expect ( value ) . toEqual ( 'some-textarea-value ' ) ;
201+ expect ( value ) . toEqual ( 'some text ' ) ;
212202 } ) ;
213203 } ) ;
214204 } ) ;
0 commit comments