Skip to content

Commit f4111e2

Browse files
author
Jack Pope
committed
Use createRoot in ReactART-test
1 parent ad13f39 commit f4111e2

File tree

1 file changed

+52
-36
lines changed

1 file changed

+52
-36
lines changed

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

+52-36
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import Wedge from 'react-art/Wedge';
2424

2525
// Isolate DOM renderer.
2626
jest.resetModules();
27-
const ReactDOM = require('react-dom');
2827
const ReactDOMClient = require('react-dom/client');
2928
const act = require('internal-test-utils').act;
3029

@@ -178,11 +177,11 @@ describe('ReactART', () => {
178177
testDOMNodeStructure(realNode, expectedStructure);
179178
});
180179

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

187186
const expectedStructure = {
188187
nodeName: 'svg',
@@ -200,10 +199,12 @@ describe('ReactART', () => {
200199
],
201200
};
202201

203-
const realNode = ReactDOM.findDOMNode(instance);
202+
const realNode = container.firstChild;
204203
testDOMNodeStructure(realNode, expectedStructure);
205204

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

208209
const expectedNewStructure = {
209210
nodeName: 'svg',
@@ -224,7 +225,7 @@ describe('ReactART', () => {
224225
testDOMNodeStructure(realNode, expectedNewStructure);
225226
});
226227

227-
it('should be able to reorder many components', () => {
228+
it('should be able to reorder many components', async () => {
228229
class Component extends React.Component {
229230
render() {
230231
const chars = this.props.chars.split('');
@@ -242,14 +243,17 @@ describe('ReactART', () => {
242243
const before = 'abcdefghijklmnopqrst';
243244
const after = 'mxhpgwfralkeoivcstzy';
244245

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

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

255259
it('renders composite with lifecycle inside group', async () => {
@@ -311,7 +315,7 @@ describe('ReactART', () => {
311315
expect(ref.constructor).toBe(CustomShape);
312316
});
313317

314-
it('resolves refs before componentDidUpdate', () => {
318+
it('resolves refs before componentDidUpdate', async () => {
315319
class CustomShape extends React.Component {
316320
render() {
317321
return <Shape />;
@@ -341,24 +345,34 @@ describe('ReactART', () => {
341345
);
342346
}
343347
}
344-
ReactDOM.render(<Outer />, container);
348+
349+
const root = ReactDOMClient.createRoot(container);
350+
await act(() => {
351+
root.render(<Outer />);
352+
});
345353
expect(ref).toBe(null);
346-
ReactDOM.render(<Outer mountCustomShape={true} />, container);
354+
355+
await act(() => {
356+
root.render(<Outer mountCustomShape={true} />);
357+
});
347358
expect(ref.constructor).toBe(CustomShape);
348359
});
349360

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-
);
361+
it('adds and updates event handlers', async () => {
362+
const root = ReactDOMClient.createRoot(container);
363+
364+
async function render(onClick) {
365+
await act(() => {
366+
root.render(
367+
<Surface>
368+
<Shape onClick={onClick} />
369+
</Surface>,
370+
);
371+
});
358372
}
359373

360374
function doClick(instance) {
361-
const path = ReactDOM.findDOMNode(instance).querySelector('path');
375+
const path = container.firstChild.querySelector('path');
362376

363377
path.dispatchEvent(
364378
new MouseEvent('click', {
@@ -368,12 +382,12 @@ describe('ReactART', () => {
368382
}
369383

370384
const onClick1 = jest.fn();
371-
let instance = render(onClick1);
385+
let instance = await render(onClick1);
372386
doClick(instance);
373387
expect(onClick1).toBeCalled();
374388

375389
const onClick2 = jest.fn();
376-
instance = render(onClick2);
390+
instance = await render(onClick2);
377391
doClick(instance);
378392
expect(onClick2).toBeCalled();
379393
});
@@ -412,15 +426,17 @@ describe('ReactART', () => {
412426

413427
await waitFor(['A']);
414428

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

425441
expect(ops).toEqual([null, 'ART']);
426442

0 commit comments

Comments
 (0)