Skip to content

Commit 70b6e03

Browse files
committed
Convert ReactLegacyContextDisabled-test.internal to createRoot
1 parent 7724754 commit 70b6e03

File tree

1 file changed

+69
-57
lines changed

1 file changed

+69
-57
lines changed

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

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

1212
let React;
13-
let ReactDOM;
13+
let ReactDOMClient;
1414
let ReactDOMServer;
1515
let ReactFeatureFlags;
1616

17+
let act;
18+
1719
describe('ReactLegacyContextDisabled', () => {
1820
beforeEach(() => {
1921
jest.resetModules();
2022

2123
React = require('react');
22-
ReactDOM = require('react-dom');
24+
ReactDOMClient = require('react-dom/client');
2325
ReactDOMServer = require('react-dom/server');
2426
ReactFeatureFlags = require('shared/ReactFeatureFlags');
2527
ReactFeatureFlags.disableLegacyContext = true;
28+
act = require('internal-test-utils').act;
29+
30+
act = require('internal-test-utils').act;
2631
});
2732

2833
function formatValue(val) {
@@ -38,7 +43,7 @@ describe('ReactLegacyContextDisabled', () => {
3843
return JSON.stringify(val);
3944
}
4045

41-
it('warns for legacy context', () => {
46+
it('warns for legacy context', async () => {
4247
class LegacyProvider extends React.Component {
4348
static childContextTypes = {
4449
foo() {},
@@ -81,17 +86,19 @@ describe('ReactLegacyContextDisabled', () => {
8186
}
8287

8388
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-
);
89+
const root = ReactDOMClient.createRoot(container);
90+
await expect(async () => {
91+
await act(() => {
92+
root.render(
93+
<LegacyProvider>
94+
<span>
95+
<LegacyClsConsumer />
96+
<LegacyFnConsumer />
97+
<RegularFn />
98+
</span>
99+
</LegacyProvider>,
100+
);
101+
});
95102
}).toErrorDev([
96103
'LegacyProvider uses the legacy childContextTypes API which is no longer supported. ' +
97104
'Use React.createContext() instead.',
@@ -104,19 +111,20 @@ describe('ReactLegacyContextDisabled', () => {
104111
expect(lifecycleContextLog).toEqual([]);
105112

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

121129
// test server path.
122130
let text;
@@ -143,7 +151,7 @@ describe('ReactLegacyContextDisabled', () => {
143151
expect(lifecycleContextLog).toEqual([{}, {}, {}]);
144152
});
145153

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

149157
class Provider extends React.Component {
@@ -185,44 +193,48 @@ describe('ReactLegacyContextDisabled', () => {
185193
}
186194

187195
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-
);
196+
const root = ReactDOMClient.createRoot(container);
197+
await act(() => {
198+
root.render(
199+
<Provider value="a">
200+
<span>
201+
<RenderPropConsumer />
202+
<ContextTypeConsumer />
203+
<FnConsumer />
204+
</span>
205+
</Provider>,
206+
);
207+
});
198208
expect(container.textContent).toBe('aaa');
199209
expect(lifecycleContextLog).toEqual([]);
200210

201211
// 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-
);
212+
await act(() => {
213+
root.render(
214+
<Provider value="a">
215+
<span>
216+
<RenderPropConsumer />
217+
<ContextTypeConsumer />
218+
<FnConsumer />
219+
</span>
220+
</Provider>,
221+
);
222+
});
212223
expect(container.textContent).toBe('aaa');
213224
expect(lifecycleContextLog).toEqual(['a', 'a', 'a']);
214225
lifecycleContextLog.length = 0;
215226

216-
ReactDOM.render(
217-
<Provider value="b">
218-
<span>
219-
<RenderPropConsumer />
220-
<ContextTypeConsumer />
221-
<FnConsumer />
222-
</span>
223-
</Provider>,
224-
container,
225-
);
227+
await act(() => {
228+
root.render(
229+
<Provider value="b">
230+
<span>
231+
<RenderPropConsumer />
232+
<ContextTypeConsumer />
233+
<FnConsumer />
234+
</span>
235+
</Provider>,
236+
);
237+
});
226238
expect(container.textContent).toBe('bbb');
227239
if (gate(flags => flags.enableLazyContextPropagation)) {
228240
// In the lazy propagation implementation, we don't check if context
@@ -233,6 +245,6 @@ describe('ReactLegacyContextDisabled', () => {
233245
// changed, so we skipped sCU.
234246
expect(lifecycleContextLog).toEqual(['b', 'b']);
235247
}
236-
ReactDOM.unmountComponentAtNode(container);
248+
root.unmount();
237249
});
238250
});

0 commit comments

Comments
 (0)