@samitouri / QOS-React-2 / commits / 43a3653b19

Convert ReactContextValidator to createRoot (#28085)

Sebastian Silbermann committed Jan 25, 2024 at 18:37 UTC 43a3653b1958164f2b6b4dd57bceb75a95344570
1 file changed +50 -31
packages/react/src/__tests__/ReactContextValidator-test.js
+50 -31
@@ -17,9 +17,10 @@
17
18 let PropTypes;
19 let React;
20 -let ReactDOM;
20 +let ReactDOMClient;
21 let ReactDOMServer;
22 let ReactTestUtils;
23 +let act;
24
25 describe('ReactContextValidator', () => {
26 beforeEach(() => {
@@ -27,9 +28,10 @@ describe('ReactContextValidator', () => {
28
29 PropTypes = require('prop-types');
30 React = require('react');
30 - ReactDOM = require('react-dom');
31 + ReactDOMClient = require('react-dom/client');
32 ReactDOMServer = require('react-dom/server');
33 ReactTestUtils = require('react-dom/test-utils');
34 + act = require('internal-test-utils').act;
35 });
36
37 // TODO: This behavior creates a runtime dependency on propTypes. We should
@@ -72,7 +74,7 @@ describe('ReactContextValidator', () => {
74 });
75
76 // @gate !disableLegacyContext
75 - it('should pass next context to lifecycles', () => {
77 + it('should pass next context to lifecycles', async () => {
78 let componentDidMountContext;
79 let componentDidUpdateContext;
80 let componentWillReceivePropsContext;
@@ -135,11 +137,18 @@ describe('ReactContextValidator', () => {
137 };
138
139 const container = document.createElement('div');
138 - ReactDOM.render(<Parent foo="abc" />, container);
140 + const root = ReactDOMClient.createRoot(container);
141 + await act(() => {
142 + root.render(<Parent foo="abc" />);
143 + });
144 +
145 expect(constructorContext).toEqual({foo: 'abc'});
146 expect(renderContext).toEqual({foo: 'abc'});
147 expect(componentDidMountContext).toEqual({foo: 'abc'});
142 - ReactDOM.render(<Parent foo="def" />, container);
148 + await act(() => {
149 + root.render(<Parent foo="def" />);
150 + });
151 +
152 expect(componentWillReceivePropsContext).toEqual({foo: 'abc'});
153 expect(componentWillReceivePropsNextContext).toEqual({foo: 'def'});
154 expect(shouldComponentUpdateContext).toEqual({foo: 'abc'});
@@ -369,7 +378,7 @@ describe('ReactContextValidator', () => {
378 expect(childContext.foo).toBe('FOO');
379 });
380
372 - it('should pass next context to lifecycles', () => {
381 + it('should pass next context to lifecycles', async () => {
382 let componentDidMountContext;
383 let componentDidUpdateContext;
384 let componentWillReceivePropsContext;
@@ -417,21 +426,26 @@ describe('ReactContextValidator', () => {
426 const secondContext = {bar: 456};
427
428 const container = document.createElement('div');
420 - ReactDOM.render(
421 - <Context.Provider value={firstContext}>
422 - <Component />
423 - </Context.Provider>,
424 - container,
425 - );
429 + const root = ReactDOMClient.createRoot(container);
430 + await act(() => {
431 + root.render(
432 + <Context.Provider value={firstContext}>
433 + <Component />
434 + </Context.Provider>,
435 + );
436 + });
437 +
438 expect(constructorContext).toBe(firstContext);
439 expect(renderContext).toBe(firstContext);
440 expect(componentDidMountContext).toBe(firstContext);
429 - ReactDOM.render(
430 - <Context.Provider value={secondContext}>
431 - <Component />
432 - </Context.Provider>,
433 - container,
434 - );
441 + await act(() => {
442 + root.render(
443 + <Context.Provider value={secondContext}>
444 + <Component />
445 + </Context.Provider>,
446 + );
447 + });
448 +
449 expect(componentWillReceivePropsContext).toBe(firstContext);
450 expect(componentWillReceivePropsNextContext).toBe(secondContext);
451 expect(componentWillUpdateContext).toBe(firstContext);
@@ -447,7 +461,7 @@ describe('ReactContextValidator', () => {
461 }
462 });
463
450 - it('should re-render PureComponents when context Provider updates', () => {
464 + it('should re-render PureComponents when context Provider updates', async () => {
465 let renderedContext;
466
467 const Context = React.createContext();
@@ -464,19 +478,24 @@ describe('ReactContextValidator', () => {
478 const secondContext = {bar: 456};
479
480 const container = document.createElement('div');
467 - ReactDOM.render(
468 - <Context.Provider value={firstContext}>
469 - <Component />
470 - </Context.Provider>,
471 - container,
472 - );
481 + const root = ReactDOMClient.createRoot(container);
482 + await act(() => {
483 + root.render(
484 + <Context.Provider value={firstContext}>
485 + <Component />
486 + </Context.Provider>,
487 + );
488 + });
489 +
490 expect(renderedContext).toBe(firstContext);
474 - ReactDOM.render(
475 - <Context.Provider value={secondContext}>
476 - <Component />
477 - </Context.Provider>,
478 - container,
479 - );
491 + await act(() => {
492 + root.render(
493 + <Context.Provider value={secondContext}>
494 + <Component />
495 + </Context.Provider>,
496 + );
497 + });
498 +
499 expect(renderedContext).toBe(secondContext);
500 });
501