1111
1212let React ;
1313let ReactDOMClient ;
14- let ReactTestUtils ;
1514let act ;
1615
1716let idCallOrder ;
@@ -28,7 +27,6 @@ const recordIDAndReturnFalse = function (id, event) {
2827} ;
2928const LISTENER = jest . fn ( ) ;
3029const ON_CLICK_KEY = 'onClick' ;
31- const ON_MOUSE_ENTER_KEY = 'onMouseEnter' ;
3230
3331let GRANDPARENT ;
3432let PARENT ;
@@ -50,7 +48,6 @@ describe('ReactBrowserEventEmitter', () => {
5048
5149 React = require ( 'react' ) ;
5250 ReactDOMClient = require ( 'react-dom/client' ) ;
53- ReactTestUtils = require ( 'react-dom/test-utils' ) ;
5451 act = require ( 'internal-test-utils' ) . act ;
5552 container = document . createElement ( 'div' ) ;
5653 document . body . appendChild ( container ) ;
@@ -184,7 +181,7 @@ describe('ReactBrowserEventEmitter', () => {
184181 it ( 'should continue bubbling if an error is thrown' , async ( ) => {
185182 await renderTree ( ) ;
186183 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 ) {
188185 recordID ( PARENT ) ;
189186 throw new Error ( 'Handler interrupted' ) ;
190187 } ) ;
@@ -193,15 +190,36 @@ describe('ReactBrowserEventEmitter', () => {
193190 ON_CLICK_KEY ,
194191 recordID . bind ( null , GRANDPARENT ) ,
195192 ) ;
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+ }
205223 } ) ;
206224
207225 it ( 'should set currentTarget' , async ( ) => {
@@ -347,14 +365,4 @@ describe('ReactBrowserEventEmitter', () => {
347365 } ) ;
348366 expect ( handleParentClick ) . toHaveBeenCalledTimes ( 0 ) ;
349367 } ) ;
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- } ) ;
360368} ) ;
0 commit comments