Convert InvalidEventListeners to createRoot (#28180)
Sebastian Silbermann committed
Feb 2, 2024 at 09:14 UTC
f28f022f22ce9cb737f12a16675f7003e95e9c93
1 file changed
+32
-18
packages/react-dom/src/__tests__/InvalidEventListeners-test.js
+32
-18
@@ -13,13 +13,15 @@ jest.mock('react-dom-bindings/src/events/isEventSupported');
13
14
describe('InvalidEventListeners', () => {
15
let React;
16
- let ReactDOM;
16
+ let ReactDOMClient;
17
+ let act;
18
let container;
19
20
beforeEach(() => {
21
jest.resetModules();
22
React = require('react');
22
- ReactDOM = require('react-dom');
23
+ ReactDOMClient = require('react-dom/client');
24
+ act = require('internal-test-utils').act;
25
26
container = document.createElement('div');
27
document.body.appendChild(container);
@@ -30,13 +32,16 @@ describe('InvalidEventListeners', () => {
32
container = null;
33
});
34
33
- it('should prevent non-function listeners, at dispatch', () => {
34
- let node;
35
- expect(() => {
36
- node = ReactDOM.render(<div onClick="not a function" />, container);
35
+ it('should prevent non-function listeners, at dispatch', async () => {
36
+ const root = ReactDOMClient.createRoot(container);
37
+ await expect(async () => {
38
+ await act(() => {
39
+ root.render(<div onClick="not a function" />);
40
+ });
41
}).toErrorDev(
42
'Expected `onClick` listener to be a function, instead got a value of `string` type.',
43
);
44
+ const node = container.firstChild;
45
46
spyOnProd(console, 'error');
47
@@ -46,11 +51,13 @@ describe('InvalidEventListeners', () => {
51
}
52
window.addEventListener('error', handleWindowError);
53
try {
49
- node.dispatchEvent(
50
- new MouseEvent('click', {
51
- bubbles: true,
52
- }),
53
- );
54
+ await act(() => {
55
+ node.dispatchEvent(
56
+ new MouseEvent('click', {
57
+ bubbles: true,
58
+ }),
59
+ );
60
+ });
61
} finally {
62
window.removeEventListener('error', handleWindowError);
63
}
@@ -77,12 +84,19 @@ describe('InvalidEventListeners', () => {
84
}
85
});
86
80
- it('should not prevent null listeners, at dispatch', () => {
81
- const node = ReactDOM.render(<div onClick={null} />, container);
82
- node.dispatchEvent(
83
- new MouseEvent('click', {
84
- bubbles: true,
85
- }),
86
- );
87
+ it('should not prevent null listeners, at dispatch', async () => {
88
+ const root = ReactDOMClient.createRoot(container);
89
+ await act(() => {
90
+ root.render(<div onClick={null} />);
91
+ });
92
+
93
+ const node = container.firstChild;
94
+ await act(() => {
95
+ node.dispatchEvent(
96
+ new MouseEvent('click', {
97
+ bubbles: true,
98
+ }),
99
+ );
100
+ });
101
});
102
});