@samitouri / QOS-React-1 / commits / c6bb12edd0

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