@@ -24,7 +24,6 @@ import Wedge from 'react-art/Wedge';
24
24
25
25
// Isolate DOM renderer.
26
26
jest . resetModules ( ) ;
27
- const ReactDOM = require ( 'react-dom' ) ;
28
27
const ReactDOMClient = require ( 'react-dom/client' ) ;
29
28
const act = require ( 'internal-test-utils' ) . act ;
30
29
@@ -178,11 +177,11 @@ describe('ReactART', () => {
178
177
testDOMNodeStructure ( realNode , expectedStructure ) ;
179
178
} ) ;
180
179
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
+ } ) ;
186
185
187
186
const expectedStructure = {
188
187
nodeName : 'svg' ,
@@ -200,10 +199,12 @@ describe('ReactART', () => {
200
199
] ,
201
200
} ;
202
201
203
- const realNode = ReactDOM . findDOMNode ( instance ) ;
202
+ const realNode = container . firstChild ;
204
203
testDOMNodeStructure ( realNode , expectedStructure ) ;
205
204
206
- ReactDOM . render ( < TestComponent flipped = { true } /> , container ) ;
205
+ await act ( ( ) => {
206
+ root . render ( < TestComponent flipped = { true } /> ) ;
207
+ } ) ;
207
208
208
209
const expectedNewStructure = {
209
210
nodeName : 'svg' ,
@@ -224,7 +225,7 @@ describe('ReactART', () => {
224
225
testDOMNodeStructure ( realNode , expectedNewStructure ) ;
225
226
} ) ;
226
227
227
- it ( 'should be able to reorder many components' , ( ) => {
228
+ it ( 'should be able to reorder many components' , async ( ) => {
228
229
class Component extends React . Component {
229
230
render ( ) {
230
231
const chars = this . props . chars . split ( '' ) ;
@@ -242,14 +243,17 @@ describe('ReactART', () => {
242
243
const before = 'abcdefghijklmnopqrst' ;
243
244
const after = 'mxhpgwfralkeoivcstzy' ;
244
245
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 ;
247
251
expect ( realNode . textContent ) . toBe ( before ) ;
248
252
249
- instance = ReactDOM . render ( < Component chars = { after } /> , container ) ;
253
+ await act ( ( ) => {
254
+ root . render ( < Component chars = { after } /> ) ;
255
+ } ) ;
250
256
expect ( realNode . textContent ) . toBe ( after ) ;
251
-
252
- ReactDOM . unmountComponentAtNode ( container ) ;
253
257
} ) ;
254
258
255
259
it ( 'renders composite with lifecycle inside group' , async ( ) => {
@@ -311,7 +315,7 @@ describe('ReactART', () => {
311
315
expect ( ref . constructor ) . toBe ( CustomShape ) ;
312
316
} ) ;
313
317
314
- it ( 'resolves refs before componentDidUpdate' , ( ) => {
318
+ it ( 'resolves refs before componentDidUpdate' , async ( ) => {
315
319
class CustomShape extends React . Component {
316
320
render ( ) {
317
321
return < Shape /> ;
@@ -341,24 +345,34 @@ describe('ReactART', () => {
341
345
) ;
342
346
}
343
347
}
344
- ReactDOM . render ( < Outer /> , container ) ;
348
+
349
+ const root = ReactDOMClient . createRoot ( container ) ;
350
+ await act ( ( ) => {
351
+ root . render ( < Outer /> ) ;
352
+ } ) ;
345
353
expect ( ref ) . toBe ( null ) ;
346
- ReactDOM . render ( < Outer mountCustomShape = { true } /> , container ) ;
354
+
355
+ await act ( ( ) => {
356
+ root . render ( < Outer mountCustomShape = { true } /> ) ;
357
+ } ) ;
347
358
expect ( ref . constructor ) . toBe ( CustomShape ) ;
348
359
} ) ;
349
360
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
+ } ) ;
358
372
}
359
373
360
374
function doClick ( instance ) {
361
- const path = ReactDOM . findDOMNode ( instance ) . querySelector ( 'path' ) ;
375
+ const path = container . firstChild . querySelector ( 'path' ) ;
362
376
363
377
path . dispatchEvent (
364
378
new MouseEvent ( 'click' , {
@@ -368,12 +382,12 @@ describe('ReactART', () => {
368
382
}
369
383
370
384
const onClick1 = jest . fn ( ) ;
371
- let instance = render ( onClick1 ) ;
385
+ let instance = await render ( onClick1 ) ;
372
386
doClick ( instance ) ;
373
387
expect ( onClick1 ) . toBeCalled ( ) ;
374
388
375
389
const onClick2 = jest . fn ( ) ;
376
- instance = render ( onClick2 ) ;
390
+ instance = await render ( onClick2 ) ;
377
391
doClick ( instance ) ;
378
392
expect ( onClick2 ) . toBeCalled ( ) ;
379
393
} ) ;
@@ -412,15 +426,17 @@ describe('ReactART', () => {
412
426
413
427
await waitFor ( [ 'A' ] ) ;
414
428
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 >
419
433
< LogCurrentRenderer />
420
- </ CurrentRendererContext . Provider >
421
- </ Surface > ,
422
- container ,
423
- ) ;
434
+ < CurrentRendererContext . Provider value = "ART" >
435
+ < LogCurrentRenderer />
436
+ </ CurrentRendererContext . Provider >
437
+ </ Surface > ,
438
+ ) ;
439
+ } ) ;
424
440
425
441
expect ( ops ) . toEqual ( [ null , 'ART' ] ) ;
426
442
0 commit comments