Skip to content

Commit c7e735f

Browse files
authored
Convert ReactLegacyContextDisabled-test.internal to createRoot (#28093)
Convert ReactLegacyContextDisabled-test.internal to createRoot
1 parent 991b72a commit c7e735f

File tree

1 file changed

+66
-57
lines changed

1 file changed

+66
-57
lines changed

packages/react-dom/src/__tests__/ReactLegacyContextDisabled-test.internal.js

Lines changed: 66 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,21 @@
1010
'use strict';
1111

1212
let React;
13-
let ReactDOM;
13+
let ReactDOMClient;
1414
let ReactDOMServer;
1515
let ReactFeatureFlags;
16+
let act;
1617

1718
describe('ReactLegacyContextDisabled', () => {
1819
beforeEach(() => {
1920
jest.resetModules();
2021

2122
React = require('react');
22-
ReactDOM = require('react-dom');
23+
ReactDOMClient = require('react-dom/client');
2324
ReactDOMServer = require('react-dom/server');
2425
ReactFeatureFlags = require('shared/ReactFeatureFlags');
2526
ReactFeatureFlags.disableLegacyContext = true;
27+
act = require('internal-test-utils').act;
2628
});
2729

2830
function formatValue(val) {
@@ -38,7 +40,7 @@ describe('ReactLegacyContextDisabled', () => {
3840
return JSON.stringify(val);
3941
}
4042

41-
it('warns for legacy context', () => {
43+
it('warns for legacy context', async () => {
4244
class LegacyProvider extends React.Component {
4345
static childContextTypes = {
4446
foo() {},
@@ -81,17 +83,19 @@ describe('ReactLegacyContextDisabled', () => {
8183
}
8284

8385
const container = document.createElement('div');
84-
expect(() => {
85-
ReactDOM.render(
86-
<LegacyProvider>
87-
<span>
88-
<LegacyClsConsumer />
89-
<LegacyFnConsumer />
90-
<RegularFn />
91-
</span>
92-
</LegacyProvider>,
93-
container,
94-
);
86+
const root = ReactDOMClient.createRoot(container);
87+
await expect(async () => {
88+
await act(() => {
89+
root.render(
90+
<LegacyProvider>
91+
<span>
92+
<LegacyClsConsumer />
93+
<LegacyFnConsumer />
94+
<RegularFn />
95+
</span>
96+
</LegacyProvider>,
97+
);
98+
});
9599
}).toErrorDev([
96100
'LegacyProvider uses the legacy childContextTypes API which is no longer supported. ' +
97101
'Use React.createContext() instead.',
@@ -104,19 +108,20 @@ describe('ReactLegacyContextDisabled', () => {
104108
expect(lifecycleContextLog).toEqual([]);
105109

106110
// Test update path.
107-
ReactDOM.render(
108-
<LegacyProvider>
109-
<span>
110-
<LegacyClsConsumer />
111-
<LegacyFnConsumer />
112-
<RegularFn />
113-
</span>
114-
</LegacyProvider>,
115-
container,
116-
);
111+
await act(() => {
112+
root.render(
113+
<LegacyProvider>
114+
<span>
115+
<LegacyClsConsumer />
116+
<LegacyFnConsumer />
117+
<RegularFn />
118+
</span>
119+
</LegacyProvider>,
120+
);
121+
});
117122
expect(container.textContent).toBe('{}undefinedundefined');
118123
expect(lifecycleContextLog).toEqual([{}, {}, {}]);
119-
ReactDOM.unmountComponentAtNode(container);
124+
root.unmount();
120125

121126
// test server path.
122127
let text;
@@ -143,7 +148,7 @@ describe('ReactLegacyContextDisabled', () => {
143148
expect(lifecycleContextLog).toEqual([{}, {}, {}]);
144149
});
145150

146-
it('renders a tree with modern context', () => {
151+
it('renders a tree with modern context', async () => {
147152
const Ctx = React.createContext();
148153

149154
class Provider extends React.Component {
@@ -185,44 +190,48 @@ describe('ReactLegacyContextDisabled', () => {
185190
}
186191

187192
const container = document.createElement('div');
188-
ReactDOM.render(
189-
<Provider value="a">
190-
<span>
191-
<RenderPropConsumer />
192-
<ContextTypeConsumer />
193-
<FnConsumer />
194-
</span>
195-
</Provider>,
196-
container,
197-
);
193+
const root = ReactDOMClient.createRoot(container);
194+
await act(() => {
195+
root.render(
196+
<Provider value="a">
197+
<span>
198+
<RenderPropConsumer />
199+
<ContextTypeConsumer />
200+
<FnConsumer />
201+
</span>
202+
</Provider>,
203+
);
204+
});
198205
expect(container.textContent).toBe('aaa');
199206
expect(lifecycleContextLog).toEqual([]);
200207

201208
// Test update path
202-
ReactDOM.render(
203-
<Provider value="a">
204-
<span>
205-
<RenderPropConsumer />
206-
<ContextTypeConsumer />
207-
<FnConsumer />
208-
</span>
209-
</Provider>,
210-
container,
211-
);
209+
await act(() => {
210+
root.render(
211+
<Provider value="a">
212+
<span>
213+
<RenderPropConsumer />
214+
<ContextTypeConsumer />
215+
<FnConsumer />
216+
</span>
217+
</Provider>,
218+
);
219+
});
212220
expect(container.textContent).toBe('aaa');
213221
expect(lifecycleContextLog).toEqual(['a', 'a', 'a']);
214222
lifecycleContextLog.length = 0;
215223

216-
ReactDOM.render(
217-
<Provider value="b">
218-
<span>
219-
<RenderPropConsumer />
220-
<ContextTypeConsumer />
221-
<FnConsumer />
222-
</span>
223-
</Provider>,
224-
container,
225-
);
224+
await act(() => {
225+
root.render(
226+
<Provider value="b">
227+
<span>
228+
<RenderPropConsumer />
229+
<ContextTypeConsumer />
230+
<FnConsumer />
231+
</span>
232+
</Provider>,
233+
);
234+
});
226235
expect(container.textContent).toBe('bbb');
227236
if (gate(flags => flags.enableLazyContextPropagation)) {
228237
// In the lazy propagation implementation, we don't check if context
@@ -233,6 +242,6 @@ describe('ReactLegacyContextDisabled', () => {
233242
// changed, so we skipped sCU.
234243
expect(lifecycleContextLog).toEqual(['b', 'b']);
235244
}
236-
ReactDOM.unmountComponentAtNode(container);
245+
root.unmount();
237246
});
238247
});

0 commit comments

Comments
 (0)