Skip to content

Commit 83fa714

Browse files
author
Sebastian Silbermann
committed
Remove ReactTestUtils from ReactBrowserEventEmitter-test
1 parent 850fac4 commit 83fa714

File tree

2 files changed

+70
-23
lines changed

2 files changed

+70
-23
lines changed

packages/react-dom/src/__tests__/ReactBrowserEventEmitter-test.js

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
let React;
1313
let ReactDOMClient;
14-
let ReactTestUtils;
1514
let act;
1615

1716
let idCallOrder;
@@ -28,7 +27,6 @@ const recordIDAndReturnFalse = function (id, event) {
2827
};
2928
const LISTENER = jest.fn();
3029
const ON_CLICK_KEY = 'onClick';
31-
const ON_MOUSE_ENTER_KEY = 'onMouseEnter';
3230

3331
let GRANDPARENT;
3432
let 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
});

packages/react-dom/src/__tests__/ReactTestUtils-test.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,45 @@ describe('ReactTestUtils', () => {
519519
expect.objectContaining({target: input}),
520520
);
521521
});
522+
523+
it('should have mouse enter simulated by test utils', async () => {
524+
const idCallOrder = [];
525+
const recordID = function (id) {
526+
idCallOrder.push(id);
527+
};
528+
let CHILD;
529+
function Child(props) {
530+
return (
531+
<div
532+
ref={current => (CHILD = current)}
533+
onMouseEnter={recordID.bind('CHILD')}
534+
/>
535+
);
536+
}
537+
538+
class ChildWrapper extends React.PureComponent {
539+
render() {
540+
return <Child />;
541+
}
542+
}
543+
544+
const container = document.createElement('div');
545+
const root = ReactDOMClient.createRoot(container);
546+
await act(() => {
547+
root.render(
548+
<div>
549+
<div>
550+
<ChildWrapper />
551+
<button disabled={true} />
552+
</div>
553+
</div>,
554+
);
555+
});
556+
await act(() => {
557+
ReactTestUtils.Simulate.mouseEnter(CHILD);
558+
});
559+
expect(idCallOrder).toEqual(['CHILD']);
560+
});
522561
});
523562

524563
it('should call setState callback with no arguments', async () => {

0 commit comments

Comments
 (0)