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