Skip to content

Commit 8b9afd4

Browse files
jackpopeAndyPengc12
authored andcommitted
Use createRoot in ReactART-test (facebook#28060)
Stacked on facebook#28059 ---------
1 parent cd616c2 commit 8b9afd4

File tree

1 file changed

+53
-36
lines changed

1 file changed

+53
-36
lines changed

packages/react-art/src/__tests__/ReactART-test.js

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Wedge from 'react-art/Wedge';
2424

2525
// Isolate DOM renderer.
2626
jest.resetModules();
27-
const ReactDOM = require('react-dom');
27+
2828
const ReactDOMClient = require('react-dom/client');
2929
const act = require('internal-test-utils').act;
3030

@@ -178,11 +178,11 @@ describe('ReactART', () => {
178178
testDOMNodeStructure(realNode, expectedStructure);
179179
});
180180

181-
it('should be able to reorder components', () => {
182-
const instance = ReactDOM.render(
183-
<TestComponent flipped={false} />,
184-
container,
185-
);
181+
it('should be able to reorder components', async () => {
182+
const root = ReactDOMClient.createRoot(container);
183+
await act(() => {
184+
root.render(<TestComponent flipped={false} />);
185+
});
186186

187187
const expectedStructure = {
188188
nodeName: 'svg',
@@ -200,10 +200,12 @@ describe('ReactART', () => {
200200
],
201201
};
202202

203-
const realNode = ReactDOM.findDOMNode(instance);
203+
const realNode = container.firstChild;
204204
testDOMNodeStructure(realNode, expectedStructure);
205205

206-
ReactDOM.render(<TestComponent flipped={true} />, container);
206+
await act(() => {
207+
root.render(<TestComponent flipped={true} />);
208+
});
207209

208210
const expectedNewStructure = {
209211
nodeName: 'svg',
@@ -224,7 +226,7 @@ describe('ReactART', () => {
224226
testDOMNodeStructure(realNode, expectedNewStructure);
225227
});
226228

227-
it('should be able to reorder many components', () => {
229+
it('should be able to reorder many components', async () => {
228230
class Component extends React.Component {
229231
render() {
230232
const chars = this.props.chars.split('');
@@ -242,14 +244,17 @@ describe('ReactART', () => {
242244
const before = 'abcdefghijklmnopqrst';
243245
const after = 'mxhpgwfralkeoivcstzy';
244246

245-
let instance = ReactDOM.render(<Component chars={before} />, container);
246-
const realNode = ReactDOM.findDOMNode(instance);
247+
const root = ReactDOMClient.createRoot(container);
248+
await act(() => {
249+
root.render(<Component chars={before} />);
250+
});
251+
const realNode = container.firstChild;
247252
expect(realNode.textContent).toBe(before);
248253

249-
instance = ReactDOM.render(<Component chars={after} />, container);
254+
await act(() => {
255+
root.render(<Component chars={after} />);
256+
});
250257
expect(realNode.textContent).toBe(after);
251-
252-
ReactDOM.unmountComponentAtNode(container);
253258
});
254259

255260
it('renders composite with lifecycle inside group', async () => {
@@ -311,7 +316,7 @@ describe('ReactART', () => {
311316
expect(ref.constructor).toBe(CustomShape);
312317
});
313318

314-
it('resolves refs before componentDidUpdate', () => {
319+
it('resolves refs before componentDidUpdate', async () => {
315320
class CustomShape extends React.Component {
316321
render() {
317322
return <Shape />;
@@ -341,24 +346,34 @@ describe('ReactART', () => {
341346
);
342347
}
343348
}
344-
ReactDOM.render(<Outer />, container);
349+
350+
const root = ReactDOMClient.createRoot(container);
351+
await act(() => {
352+
root.render(<Outer />);
353+
});
345354
expect(ref).toBe(null);
346-
ReactDOM.render(<Outer mountCustomShape={true} />, container);
355+
356+
await act(() => {
357+
root.render(<Outer mountCustomShape={true} />);
358+
});
347359
expect(ref.constructor).toBe(CustomShape);
348360
});
349361

350-
it('adds and updates event handlers', () => {
351-
function render(onClick) {
352-
return ReactDOM.render(
353-
<Surface>
354-
<Shape onClick={onClick} />
355-
</Surface>,
356-
container,
357-
);
362+
it('adds and updates event handlers', async () => {
363+
const root = ReactDOMClient.createRoot(container);
364+
365+
async function render(onClick) {
366+
await act(() => {
367+
root.render(
368+
<Surface>
369+
<Shape onClick={onClick} />
370+
</Surface>,
371+
);
372+
});
358373
}
359374

360375
function doClick(instance) {
361-
const path = ReactDOM.findDOMNode(instance).querySelector('path');
376+
const path = container.firstChild.querySelector('path');
362377

363378
path.dispatchEvent(
364379
new MouseEvent('click', {
@@ -368,12 +383,12 @@ describe('ReactART', () => {
368383
}
369384

370385
const onClick1 = jest.fn();
371-
let instance = render(onClick1);
386+
let instance = await render(onClick1);
372387
doClick(instance);
373388
expect(onClick1).toBeCalled();
374389

375390
const onClick2 = jest.fn();
376-
instance = render(onClick2);
391+
instance = await render(onClick2);
377392
doClick(instance);
378393
expect(onClick2).toBeCalled();
379394
});
@@ -412,15 +427,17 @@ describe('ReactART', () => {
412427

413428
await waitFor(['A']);
414429

415-
ReactDOM.render(
416-
<Surface>
417-
<LogCurrentRenderer />
418-
<CurrentRendererContext.Provider value="ART">
430+
const root = ReactDOMClient.createRoot(container);
431+
await act(() => {
432+
root.render(
433+
<Surface>
419434
<LogCurrentRenderer />
420-
</CurrentRendererContext.Provider>
421-
</Surface>,
422-
container,
423-
);
435+
<CurrentRendererContext.Provider value="ART">
436+
<LogCurrentRenderer />
437+
</CurrentRendererContext.Provider>
438+
</Surface>,
439+
);
440+
});
424441

425442
expect(ops).toEqual([null, 'ART']);
426443

0 commit comments

Comments
 (0)