Skip to content

Commit

Permalink
Convert renderSubtreeIntoContainer-test.js to createRoot (#28114)
Browse files Browse the repository at this point in the history
Co-authored-by: Ricky <rickhanlonii@gmail.com>
  • Loading branch information
mattcarrollcode and rickhanlonii authored Jan 27, 2024
1 parent 407faf5 commit e2b93af
Showing 1 changed file with 36 additions and 13 deletions.
49 changes: 36 additions & 13 deletions packages/react-dom/src/__tests__/renderSubtreeIntoContainer-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
const React = require('react');
const PropTypes = require('prop-types');
const ReactDOM = require('react-dom');
const ReactDOMClient = require('react-dom/client');
const ReactTestUtils = require('react-dom/test-utils');
const act = require('internal-test-utils').act;
const renderSubtreeIntoContainer =
require('react-dom').unstable_renderSubtreeIntoContainer;

Expand Down Expand Up @@ -101,7 +103,7 @@ describe('renderSubtreeIntoContainer', () => {
});

// @gate !disableLegacyContext
it('should update context if it changes due to setState', () => {
it('should update context if it changes due to setState', async () => {
const container = document.createElement('div');
document.body.appendChild(container);
const portal = document.createElement('div');
Expand Down Expand Up @@ -154,15 +156,22 @@ describe('renderSubtreeIntoContainer', () => {
);
}
}
const root = ReactDOMClient.createRoot(container);
const parentRef = React.createRef();
await act(async () => {
root.render(<Parent ref={parentRef} />);
});
const instance = parentRef.current;

const instance = ReactDOM.render(<Parent />, container);
expect(portal.firstChild.innerHTML).toBe('initial-initial');
instance.setState({bar: 'changed'});
await act(async () => {
instance.setState({bar: 'changed'});
});
expect(portal.firstChild.innerHTML).toBe('changed-changed');
});

// @gate !disableLegacyContext
it('should update context if it changes due to re-render', () => {
it('should update context if it changes due to re-render', async () => {
const container = document.createElement('div');
document.body.appendChild(container);
const portal = document.createElement('div');
Expand Down Expand Up @@ -212,13 +221,18 @@ describe('renderSubtreeIntoContainer', () => {
}
}

ReactDOM.render(<Parent bar="initial" />, container);
const root = ReactDOMClient.createRoot(container);
await act(async () => {
root.render(<Parent bar="initial" />);
});
expect(portal.firstChild.innerHTML).toBe('initial-initial');
ReactDOM.render(<Parent bar="changed" />, container);
await act(async () => {
root.render(<Parent bar="changed" />);
});
expect(portal.firstChild.innerHTML).toBe('changed-changed');
});

it('should render portal with non-context-provider parent', () => {
it('should render portal with non-context-provider parent', async () => {
const container = document.createElement('div');
document.body.appendChild(container);
const portal = document.createElement('div');
Expand All @@ -237,12 +251,15 @@ describe('renderSubtreeIntoContainer', () => {
}
}

ReactDOM.render(<Parent bar="initial" />, container);
const root = ReactDOMClient.createRoot(container);
await act(async () => {
root.render(<Parent bar="initial" />);
});
expect(portal.firstChild.innerHTML).toBe('hello');
});

// @gate !disableLegacyContext
it('should get context through non-context-provider parent', () => {
it('should get context through non-context-provider parent', async () => {
const container = document.createElement('div');
document.body.appendChild(container);
const portal = document.createElement('div');
Expand Down Expand Up @@ -281,12 +298,15 @@ describe('renderSubtreeIntoContainer', () => {
}
}

ReactDOM.render(<Parent value="foo" />, container);
const root = ReactDOMClient.createRoot(container);
await act(async () => {
root.render(<Parent value="foo" />);
});
expect(portal.textContent).toBe('foo');
});

// @gate !disableLegacyContext
it('should get context through middle non-context-provider layer', () => {
it('should get context through middle non-context-provider layer', async () => {
const container = document.createElement('div');
document.body.appendChild(container);
const portal1 = document.createElement('div');
Expand Down Expand Up @@ -333,11 +353,14 @@ describe('renderSubtreeIntoContainer', () => {
}
}

ReactDOM.render(<Parent value="foo" />, container);
const root = ReactDOMClient.createRoot(container);
await act(async () => {
root.render(<Parent value="foo" />);
});
expect(portal2.textContent).toBe('foo');
});

it('fails gracefully when mixing React 15 and 16', () => {
it('legacy test: fails gracefully when mixing React 15 and 16', () => {
class C extends React.Component {
render() {
return <div />;
Expand Down

0 comments on commit e2b93af

Please sign in to comment.