Remove ReactTestUtils from ReactJSXRuntime (#28337)
Sebastian Silbermann committed
Feb 28, 2024 at 00:12 UTC
c6bb12edd081423f3640285a08a04c2b41518a56
1 file changed
+43
-17
packages/react/src/__tests__/ReactJSXRuntime-test.js
+43
-17
@@ -12,7 +12,6 @@
12
let React;
13
let ReactDOM;
14
let ReactDOMClient;
15
-let ReactTestUtils;
15
let JSXRuntime;
16
let JSXDEVRuntime;
17
let act;
@@ -29,7 +28,6 @@ describe('ReactJSXRuntime', () => {
28
JSXDEVRuntime = require('react/jsx-dev-runtime');
29
ReactDOM = require('react-dom');
30
ReactDOMClient = require('react-dom/client');
32
- ReactTestUtils = require('react-dom/test-utils');
31
act = require('internal-test-utils').act;
32
});
33
@@ -72,7 +70,7 @@ describe('ReactJSXRuntime', () => {
70
expect(container.firstChild.textContent).toBe('persimmon');
71
});
72
75
- it('should normalize props with default values', () => {
73
+ it('should normalize props with default values', async () => {
74
class Component extends React.Component {
75
render() {
76
return JSXRuntime.jsx('span', {children: this.props.prop});
@@ -80,18 +78,33 @@ describe('ReactJSXRuntime', () => {
78
}
79
Component.defaultProps = {prop: 'testKey'};
80
83
- const instance = ReactTestUtils.renderIntoDocument(
84
- JSXRuntime.jsx(Component, {}),
85
- );
81
+ let container = document.createElement('div');
82
+ let root = ReactDOMClient.createRoot(container);
83
+ let instance;
84
+ await act(() => {
85
+ root.render(
86
+ JSXRuntime.jsx(Component, {ref: current => (instance = current)}),
87
+ );
88
+ });
89
+
90
expect(instance.props.prop).toBe('testKey');
91
88
- const inst2 = ReactTestUtils.renderIntoDocument(
89
- JSXRuntime.jsx(Component, {prop: null}),
90
- );
92
+ container = document.createElement('div');
93
+ root = ReactDOMClient.createRoot(container);
94
+ let inst2;
95
+ await act(() => {
96
+ root.render(
97
+ JSXRuntime.jsx(Component, {
98
+ prop: null,
99
+ ref: current => (inst2 = current),
100
+ }),
101
+ );
102
+ });
103
+
104
expect(inst2.props.prop).toBe(null);
105
});
106
94
- it('throws when changing a prop (in dev) after element creation', () => {
107
+ it('throws when changing a prop (in dev) after element creation', async () => {
108
class Outer extends React.Component {
109
render() {
110
const el = JSXRuntime.jsx('div', {className: 'moo'});
@@ -109,9 +122,13 @@ describe('ReactJSXRuntime', () => {
122
return el;
123
}
124
}
112
- const outer = ReactTestUtils.renderIntoDocument(
113
- JSXRuntime.jsx(Outer, {color: 'orange'}),
114
- );
125
+ const container = document.createElement('div');
126
+ const root = ReactDOMClient.createRoot(container);
127
+ await act(() => {
128
+ root.render(JSXRuntime.jsx(Outer, {color: 'orange'}));
129
+ });
130
+
131
+ const outer = container.firstChild;
132
if (__DEV__) {
133
expect(ReactDOM.findDOMNode(outer).className).toBe('moo');
134
} else {
@@ -151,15 +168,24 @@ describe('ReactJSXRuntime', () => {
168
}
169
});
170
154
- it('does not warn for NaN props', () => {
171
+ it('does not warn for NaN props', async () => {
172
class Test extends React.Component {
173
render() {
174
return JSXRuntime.jsx('div', {});
175
}
176
}
160
- const test = ReactTestUtils.renderIntoDocument(
161
- JSXRuntime.jsx(Test, {value: +undefined}),
162
- );
177
+ const container = document.createElement('div');
178
+ const root = ReactDOMClient.createRoot(container);
179
+ let test;
180
+ await act(() => {
181
+ root.render(
182
+ JSXRuntime.jsx(Test, {
183
+ value: +undefined,
184
+ ref: current => (test = current),
185
+ }),
186
+ );
187
+ });
188
+
189
expect(test.props.value).toBeNaN();
190
});
191