Skip to content

Commit 25c3413

Browse files
committed
r19 compat in tests
1 parent d42ec4e commit 25c3413

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

test/util/render.js

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ import React from 'react';
77
import ReactDOM from 'react-dom';
88
// Doing this after React is loaded makes React do a bit less DOM work
99
import 'min-react-env/install';
10-
import env from 'min-react-env';
1110
import createYouTube from './createYouTube';
1211

13-
Object.assign(global, env);
12+
const reactMajor = parseInt((ReactDOM.version || '16').split('.')[0], 10);
1413

15-
const render = (initialProps) => {
14+
async function render(initialProps) {
1615
const { YouTube, sdkMock, playerMock } = createYouTube();
1716

1817
let component;
@@ -36,18 +35,33 @@ const render = (initialProps) => {
3635
}
3736
}
3837

39-
const div = env.document.createElement('div');
40-
const container = new Promise((resolve) => {
41-
// eslint-disable-next-line react/no-deprecated
42-
ReactDOM.render(<Container {...initialProps} ref={resolve} />, div);
38+
const div = document.createElement('div');
39+
let root;
40+
if (reactMajor >= 18) {
41+
const { createRoot } = await import('react-dom/client');
42+
root = createRoot(div);
43+
} else {
44+
root = {
45+
render(element) {
46+
// eslint-disable-next-line react/no-deprecated
47+
ReactDOM.render(element, div);
48+
},
49+
unmount() {
50+
// eslint-disable-next-line react/no-deprecated
51+
ReactDOM.unmountComponentAtNode(div);
52+
},
53+
};
54+
}
55+
const container = await new Promise((resolve) => {
56+
root.render(<Container {...initialProps} ref={resolve} />);
4357
});
4458

4559
function rerender(newProps) {
46-
return container.then((wrapper) => new Promise((resolve) => {
47-
wrapper.setState({ props: newProps }, () => {
60+
return new Promise((resolve) => {
61+
container.setState({ props: newProps }, () => {
4862
Promise.resolve().then(resolve);
4963
});
50-
}));
64+
});
5165
}
5266

5367
function unmount() {
@@ -62,6 +76,6 @@ const render = (initialProps) => {
6276
rerender,
6377
unmount,
6478
}));
65-
};
79+
}
6680

6781
export default render;

0 commit comments

Comments
 (0)