11
11
12
12
let React ;
13
13
let ReactDOMClient ;
14
- let ReactTestUtils ;
15
14
let act ;
16
15
17
16
let idCallOrder ;
@@ -28,7 +27,6 @@ const recordIDAndReturnFalse = function (id, event) {
28
27
} ;
29
28
const LISTENER = jest . fn ( ) ;
30
29
const ON_CLICK_KEY = 'onClick' ;
31
- const ON_MOUSE_ENTER_KEY = 'onMouseEnter' ;
32
30
33
31
let GRANDPARENT ;
34
32
let PARENT ;
@@ -50,7 +48,6 @@ describe('ReactBrowserEventEmitter', () => {
50
48
51
49
React = require ( 'react' ) ;
52
50
ReactDOMClient = require ( 'react-dom/client' ) ;
53
- ReactTestUtils = require ( 'react-dom/test-utils' ) ;
54
51
act = require ( 'internal-test-utils' ) . act ;
55
52
container = document . createElement ( 'div' ) ;
56
53
document . body . appendChild ( container ) ;
@@ -184,7 +181,7 @@ describe('ReactBrowserEventEmitter', () => {
184
181
it ( 'should continue bubbling if an error is thrown' , async ( ) => {
185
182
await renderTree ( ) ;
186
183
await putListener ( CHILD , ON_CLICK_KEY , recordID . bind ( null , CHILD ) ) ;
187
- await putListener ( PARENT , ON_CLICK_KEY , function ( ) {
184
+ await putListener ( PARENT , ON_CLICK_KEY , function ( event ) {
188
185
recordID ( PARENT ) ;
189
186
throw new Error ( 'Handler interrupted' ) ;
190
187
} ) ;
@@ -193,15 +190,36 @@ describe('ReactBrowserEventEmitter', () => {
193
190
ON_CLICK_KEY ,
194
191
recordID . bind ( null , GRANDPARENT ) ,
195
192
) ;
196
- await expect (
197
- act ( ( ) => {
198
- ReactTestUtils . Simulate . click ( CHILD ) ;
199
- } ) ,
200
- ) . rejects . toThrow ( ) ;
201
- expect ( idCallOrder . length ) . toBe ( 3 ) ;
202
- expect ( idCallOrder [ 0 ] ) . toBe ( CHILD ) ;
203
- expect ( idCallOrder [ 1 ] ) . toBe ( PARENT ) ;
204
- expect ( idCallOrder [ 2 ] ) . toBe ( GRANDPARENT ) ;
193
+ const errorHandler = jest . fn ( event => {
194
+ event . preventDefault ( ) ;
195
+ } ) ;
196
+ window . addEventListener ( 'error' , errorHandler ) ;
197
+ try {
198
+ await act ( ( ) => {
199
+ CHILD . click ( ) ;
200
+ } ) ;
201
+ expect ( idCallOrder . length ) . toBe ( 3 ) ;
202
+ expect ( idCallOrder [ 0 ] ) . toBe ( CHILD ) ;
203
+ expect ( idCallOrder [ 1 ] ) . toBe ( PARENT ) ;
204
+ expect ( idCallOrder [ 2 ] ) . toBe ( GRANDPARENT ) ;
205
+ expect ( errorHandler ) . toHaveBeenCalledTimes ( __DEV__ ? 2 : 1 ) ;
206
+ expect ( errorHandler . mock . calls [ 0 ] [ 0 ] ) . toEqual (
207
+ expect . objectContaining ( {
208
+ error : expect . any ( Error ) ,
209
+ message : 'Handler interrupted' ,
210
+ } ) ,
211
+ ) ;
212
+ if ( __DEV__ ) {
213
+ expect ( errorHandler . mock . calls [ 1 ] [ 0 ] ) . toEqual (
214
+ expect . objectContaining ( {
215
+ error : expect . any ( Error ) ,
216
+ message : 'Handler interrupted' ,
217
+ } ) ,
218
+ ) ;
219
+ }
220
+ } finally {
221
+ window . removeEventListener ( 'error' , errorHandler ) ;
222
+ }
205
223
} ) ;
206
224
207
225
it ( 'should set currentTarget' , async ( ) => {
@@ -347,14 +365,4 @@ describe('ReactBrowserEventEmitter', () => {
347
365
} ) ;
348
366
expect ( handleParentClick ) . toHaveBeenCalledTimes ( 0 ) ;
349
367
} ) ;
350
-
351
- it ( 'should have mouse enter simulated by test utils' , async ( ) => {
352
- await renderTree ( ) ;
353
- await putListener ( CHILD , ON_MOUSE_ENTER_KEY , recordID . bind ( null , CHILD ) ) ;
354
- await act ( ( ) => {
355
- ReactTestUtils . Simulate . mouseEnter ( CHILD ) ;
356
- } ) ;
357
- expect ( idCallOrder . length ) . toBe ( 1 ) ;
358
- expect ( idCallOrder [ 0 ] ) . toBe ( CHILD ) ;
359
- } ) ;
360
368
} ) ;
0 commit comments