99
1010'use strict' ;
1111
12- import {
13- blur ,
14- focus ,
15- keydown ,
16- setPointerEvent ,
17- platform ,
18- dispatchPointerDown ,
19- dispatchPointerUp ,
20- } from '../test-utils' ;
12+ import { createEventTarget , setPointerEvent , platform } from '../testing-library' ;
2113
2214let React ;
2315let ReactFeatureFlags ;
@@ -73,9 +65,9 @@ describe.each(table)('Focus responder', hasPointerEvents => {
7365 } ) ;
7466
7567 it ( 'does not call callbacks' , ( ) => {
76- const dispatch = arg => ref . current . dispatchEvent ( arg ) ;
77- dispatch ( focus ( ) ) ;
78- dispatch ( blur ( ) ) ;
68+ const target = createEventTarget ( ref . current ) ;
69+ target . focus ( ) ;
70+ target . blur ( ) ;
7971 expect ( onFocus ) . not . toBeCalled ( ) ;
8072 expect ( onBlur ) . not . toBeCalled ( ) ;
8173 } ) ;
@@ -97,9 +89,9 @@ describe.each(table)('Focus responder', hasPointerEvents => {
9789 } ) ;
9890
9991 it ( 'is called after "blur" event' , ( ) => {
100- const dispatch = arg => ref . current . dispatchEvent ( arg ) ;
101- dispatch ( focus ( ) ) ;
102- dispatch ( blur ( ) ) ;
92+ const target = createEventTarget ( ref . current ) ;
93+ target . focus ( ) ;
94+ target . blur ( ) ;
10395 expect ( onBlur ) . toHaveBeenCalledTimes ( 1 ) ;
10496 } ) ;
10597 } ) ;
@@ -127,29 +119,32 @@ describe.each(table)('Focus responder', hasPointerEvents => {
127119 beforeEach ( componentInit ) ;
128120
129121 it ( 'is called after "focus" event' , ( ) => {
130- ref . current . dispatchEvent ( focus ( ) ) ;
122+ const target = createEventTarget ( ref . current ) ;
123+ target . focus ( ) ;
131124 expect ( onFocus ) . toHaveBeenCalledTimes ( 1 ) ;
132125 } ) ;
133126
134127 it ( 'is not called if descendants of target receive focus' , ( ) => {
135- innerRef . current . dispatchEvent ( focus ( ) ) ;
128+ const target = createEventTarget ( innerRef . current ) ;
129+ target . focus ( ) ;
136130 expect ( onFocus ) . not . toBeCalled ( ) ;
137131 } ) ;
138132
139133 it ( 'is called with the correct pointerType: mouse' , ( ) => {
140- const target = ref . current ;
141- dispatchPointerDown ( target , { pointerType : 'mouse' } ) ;
142- dispatchPointerUp ( target , { pointerType : 'mouse' } ) ;
134+ const target = createEventTarget ( ref . current ) ;
135+ target . pointerdown ( ) ;
136+ target . pointerup ( ) ;
143137 expect ( onFocus ) . toHaveBeenCalledTimes ( 1 ) ;
144138 expect ( onFocus ) . toHaveBeenCalledWith (
145139 expect . objectContaining ( { pointerType : 'mouse' } ) ,
146140 ) ;
147141 } ) ;
148142
149143 it ( 'is called with the correct pointerType: touch' , ( ) => {
150- const target = ref . current ;
151- dispatchPointerDown ( target , { pointerType : 'touch' } ) ;
152- dispatchPointerUp ( target , { pointerType : 'touch' } ) ;
144+ const target = createEventTarget ( ref . current ) ;
145+ const pointerType = 'touch' ;
146+ target . pointerdown ( { pointerType} ) ;
147+ target . pointerup ( { pointerType} ) ;
153148 expect ( onFocus ) . toHaveBeenCalledTimes ( 1 ) ;
154149 expect ( onFocus ) . toHaveBeenCalledWith (
155150 expect . objectContaining ( { pointerType : 'touch' } ) ,
@@ -158,9 +153,10 @@ describe.each(table)('Focus responder', hasPointerEvents => {
158153
159154 if ( hasPointerEvents ) {
160155 it ( 'is called with the correct pointerType: pen' , ( ) => {
161- const target = ref . current ;
162- dispatchPointerDown ( target , { pointerType : 'pen' } ) ;
163- dispatchPointerUp ( target , { pointerType : 'pen' } ) ;
156+ const target = createEventTarget ( ref . current ) ;
157+ const pointerType = 'pen' ;
158+ target . pointerdown ( { pointerType} ) ;
159+ target . pointerup ( { pointerType} ) ;
164160 expect ( onFocus ) . toHaveBeenCalledTimes ( 1 ) ;
165161 expect ( onFocus ) . toHaveBeenCalledWith (
166162 expect . objectContaining ( { pointerType : 'pen' } ) ,
@@ -169,10 +165,9 @@ describe.each(table)('Focus responder', hasPointerEvents => {
169165 }
170166
171167 it ( 'is called with the correct pointerType using a keyboard' , ( ) => {
172- const target = ref . current ;
173- // Keyboard tab
174- target . dispatchEvent ( keydown ( { key : 'Tab' } ) ) ;
175- target . dispatchEvent ( focus ( ) ) ;
168+ const target = createEventTarget ( ref . current ) ;
169+ target . keydown ( { key : 'Tab' } ) ;
170+ target . focus ( ) ;
176171 expect ( onFocus ) . toHaveBeenCalledTimes ( 1 ) ;
177172 expect ( onFocus ) . toHaveBeenCalledWith (
178173 expect . objectContaining ( { pointerType : 'keyboard' } ) ,
@@ -184,10 +179,11 @@ describe.each(table)('Focus responder', hasPointerEvents => {
184179 jest . resetModules ( ) ;
185180 initializeModules ( ) ;
186181 componentInit ( ) ;
187- const target = ref . current ;
188182
189- target . dispatchEvent ( keydown ( { key : 'Tab' , altKey : true } ) ) ;
190- target . dispatchEvent ( focus ( ) ) ;
183+ const target = createEventTarget ( ref . current ) ;
184+ target . keydown ( { key : 'Tab' , altKey : true } ) ;
185+ target . focus ( ) ;
186+
191187 expect ( onFocus ) . toHaveBeenCalledTimes ( 1 ) ;
192188 expect ( onFocus ) . toHaveBeenCalledWith (
193189 expect . objectContaining ( {
@@ -220,20 +216,20 @@ describe.each(table)('Focus responder', hasPointerEvents => {
220216 } ) ;
221217
222218 it ( 'is called after "blur" and "focus" events' , ( ) => {
223- const target = ref . current ;
224- target . dispatchEvent ( focus ( ) ) ;
219+ const target = createEventTarget ( ref . current ) ;
220+ target . focus ( ) ;
225221 expect ( onFocusChange ) . toHaveBeenCalledTimes ( 1 ) ;
226222 expect ( onFocusChange ) . toHaveBeenCalledWith ( true ) ;
227- target . dispatchEvent ( blur ( ) ) ;
223+ target . blur ( ) ;
228224 expect ( onFocusChange ) . toHaveBeenCalledTimes ( 2 ) ;
229225 expect ( onFocusChange ) . toHaveBeenCalledWith ( false ) ;
230226 } ) ;
231227
232228 it ( 'is not called after "blur" and "focus" events on descendants' , ( ) => {
233- const target = innerRef . current ;
234- target . dispatchEvent ( focus ( ) ) ;
229+ const target = createEventTarget ( innerRef . current ) ;
230+ target . focus ( ) ;
235231 expect ( onFocusChange ) . toHaveBeenCalledTimes ( 0 ) ;
236- target . dispatchEvent ( blur ( ) ) ;
232+ target . blur ( ) ;
237233 expect ( onFocusChange ) . toHaveBeenCalledTimes ( 0 ) ;
238234 } ) ;
239235 } ) ;
@@ -259,48 +255,52 @@ describe.each(table)('Focus responder', hasPointerEvents => {
259255 } ) ;
260256
261257 it ( 'is called after "focus" and "blur" if keyboard navigation is active' , ( ) => {
262- const target = ref . current ;
258+ const target = createEventTarget ( ref . current ) ;
259+ const containerTarget = createEventTarget ( container ) ;
263260 // use keyboard first
264- container . dispatchEvent ( keydown ( { key : 'Tab' } ) ) ;
265- target . dispatchEvent ( focus ( ) ) ;
261+ containerTarget . keydown ( { key : 'Tab' } ) ;
262+ target . focus ( ) ;
266263 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 1 ) ;
267264 expect ( onFocusVisibleChange ) . toHaveBeenCalledWith ( true ) ;
268- target . dispatchEvent ( blur ( { relatedTarget : container } ) ) ;
265+ target . blur ( { relatedTarget : container } ) ;
269266 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 2 ) ;
270267 expect ( onFocusVisibleChange ) . toHaveBeenCalledWith ( false ) ;
271268 } ) ;
272269
273270 it ( 'is called if non-keyboard event is dispatched on target previously focused with keyboard' , ( ) => {
274- const target = ref . current ;
271+ const target = createEventTarget ( ref . current ) ;
272+ const containerTarget = createEventTarget ( container ) ;
275273 // use keyboard first
276- container . dispatchEvent ( keydown ( { key : 'Tab' } ) ) ;
277- target . dispatchEvent ( focus ( ) ) ;
274+ containerTarget . keydown ( { key : 'Tab' } ) ;
275+ target . focus ( ) ;
278276 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 1 ) ;
279277 expect ( onFocusVisibleChange ) . toHaveBeenCalledWith ( true ) ;
280278 // then use pointer on the target, focus should no longer be visible
281- dispatchPointerDown ( target ) ;
279+ target . pointerdown ( ) ;
282280 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 2 ) ;
283281 expect ( onFocusVisibleChange ) . toHaveBeenCalledWith ( false ) ;
284282 // onFocusVisibleChange should not be called again
285- target . dispatchEvent ( blur ( { relatedTarget : container } ) ) ;
283+ target . blur ( { relatedTarget : container } ) ;
286284 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 2 ) ;
287285 } ) ;
288286
289287 it ( 'is not called after "focus" and "blur" events without keyboard' , ( ) => {
290- const target = ref . current ;
291- dispatchPointerDown ( target ) ;
292- dispatchPointerUp ( target ) ;
293- dispatchPointerDown ( container ) ;
294- target . dispatchEvent ( blur ( { relatedTarget : container } ) ) ;
288+ const target = createEventTarget ( ref . current ) ;
289+ const containerTarget = createEventTarget ( container ) ;
290+ target . pointerdown ( ) ;
291+ target . pointerup ( ) ;
292+ containerTarget . pointerdown ( ) ;
293+ target . blur ( { relatedTarget : container } ) ;
295294 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 0 ) ;
296295 } ) ;
297296
298297 it ( 'is not called after "blur" and "focus" events on descendants' , ( ) => {
299- const target = innerRef . current ;
300- container . dispatchEvent ( keydown ( { key : 'Tab' } ) ) ;
301- target . dispatchEvent ( focus ( ) ) ;
298+ const innerTarget = createEventTarget ( innerRef . current ) ;
299+ const containerTarget = createEventTarget ( container ) ;
300+ containerTarget . keydown ( { key : 'Tab' } ) ;
301+ innerTarget . focus ( ) ;
302302 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 0 ) ;
303- target . dispatchEvent ( blur ( { relatedTarget : container } ) ) ;
303+ innerTarget . blur ( { relatedTarget : container } ) ;
304304 expect ( onFocusVisibleChange ) . toHaveBeenCalledTimes ( 0 ) ;
305305 } ) ;
306306 } ) ;
@@ -338,10 +338,13 @@ describe.each(table)('Focus responder', hasPointerEvents => {
338338
339339 ReactDOM . render ( < Outer /> , container ) ;
340340
341- outerRef . current . dispatchEvent ( focus ( ) ) ;
342- outerRef . current . dispatchEvent ( blur ( ) ) ;
343- innerRef . current . dispatchEvent ( focus ( ) ) ;
344- innerRef . current . dispatchEvent ( blur ( ) ) ;
341+ const innerTarget = createEventTarget ( innerRef . current ) ;
342+ const outerTarget = createEventTarget ( outerRef . current ) ;
343+
344+ outerTarget . focus ( ) ;
345+ outerTarget . blur ( ) ;
346+ innerTarget . focus ( ) ;
347+ innerTarget . blur ( ) ;
345348 expect ( events ) . toEqual ( [
346349 'outer: onFocus' ,
347350 'outer: onFocusChange' ,
0 commit comments