@@ -13,7 +13,7 @@ let act;
13
13
let useSubscription ;
14
14
let BehaviorSubject ;
15
15
let React ;
16
- let ReactTestRenderer ;
16
+ let ReactDOMClient ;
17
17
let Scheduler ;
18
18
let ReplaySubject ;
19
19
let assertLog ;
@@ -27,7 +27,7 @@ describe('useSubscription', () => {
27
27
28
28
useSubscription = require ( 'use-subscription' ) . useSubscription ;
29
29
React = require ( 'react' ) ;
30
- ReactTestRenderer = require ( 'react-test-renderer ' ) ;
30
+ ReactDOMClient = require ( 'react-dom/client ' ) ;
31
31
Scheduler = require ( 'scheduler' ) ;
32
32
33
33
act = require ( 'internal-test-utils' ) . act ;
@@ -80,12 +80,9 @@ describe('useSubscription', () => {
80
80
}
81
81
82
82
const observable = createBehaviorSubject ( ) ;
83
- let renderer ;
83
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
84
84
await act ( ( ) => {
85
- renderer = ReactTestRenderer . create (
86
- < Subscription source = { observable } /> ,
87
- { isConcurrent : true } ,
88
- ) ;
85
+ root . render ( < Subscription source = { observable } /> ) ;
89
86
} ) ;
90
87
assertLog ( [ 'default' ] ) ;
91
88
@@ -96,7 +93,7 @@ describe('useSubscription', () => {
96
93
assertLog ( [ 'abc' ] ) ;
97
94
98
95
// Unmounting the subscriber should remove listeners
99
- await act ( ( ) => renderer . update ( < div /> ) ) ;
96
+ await act ( ( ) => root . render ( < div /> ) ) ;
100
97
await act ( ( ) => observable . next ( 456 ) ) ;
101
98
await waitForAll ( [ ] ) ;
102
99
} ) ;
@@ -132,12 +129,9 @@ describe('useSubscription', () => {
132
129
}
133
130
134
131
let observable = createReplaySubject ( 'initial' ) ;
135
- let renderer ;
132
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
136
133
await act ( ( ) => {
137
- renderer = ReactTestRenderer . create (
138
- < Subscription source = { observable } /> ,
139
- { isConcurrent : true } ,
140
- ) ;
134
+ root . render ( < Subscription source = { observable } /> ) ;
141
135
} ) ;
142
136
assertLog ( [ 'initial' ] ) ;
143
137
await act ( ( ) => observable . next ( 'updated' ) ) ;
@@ -147,7 +141,7 @@ describe('useSubscription', () => {
147
141
148
142
// Unsetting the subscriber prop should reset subscribed values
149
143
observable = createReplaySubject ( undefined ) ;
150
- await act ( ( ) => renderer . update ( < Subscription source = { observable } /> ) ) ;
144
+ await act ( ( ) => root . render ( < Subscription source = { observable } /> ) ) ;
151
145
assertLog ( [ 'default' ] ) ;
152
146
} ) ;
153
147
@@ -181,12 +175,9 @@ describe('useSubscription', () => {
181
175
182
176
expect ( subscriptions ) . toHaveLength ( 0 ) ;
183
177
184
- let renderer ;
178
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
185
179
await act ( ( ) => {
186
- renderer = ReactTestRenderer . create (
187
- < Subscription source = { observableA } /> ,
188
- { isConcurrent : true } ,
189
- ) ;
180
+ root . render ( < Subscription source = { observableA } /> ) ;
190
181
} ) ;
191
182
192
183
// Updates while subscribed should re-render the child component
@@ -195,7 +186,7 @@ describe('useSubscription', () => {
195
186
expect ( subscriptions [ 0 ] ) . toBe ( observableA ) ;
196
187
197
188
// Unsetting the subscriber prop should reset subscribed values
198
- await act ( ( ) => renderer . update ( < Subscription source = { observableB } /> ) ) ;
189
+ await act ( ( ) => root . render ( < Subscription source = { observableB } /> ) ) ;
199
190
200
191
assertLog ( [ 'b-0' ] ) ;
201
192
expect ( subscriptions ) . toHaveLength ( 2 ) ;
@@ -240,12 +231,9 @@ describe('useSubscription', () => {
240
231
241
232
expect ( subscriptions ) . toHaveLength ( 0 ) ;
242
233
243
- let renderer ;
234
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
244
235
await act ( ( ) => {
245
- renderer = ReactTestRenderer . create (
246
- < Subscription source = { observableA } /> ,
247
- { isConcurrent : true } ,
248
- ) ;
236
+ root . render ( < Subscription source = { observableA } /> ) ;
249
237
} ) ;
250
238
251
239
// Updates while subscribed should re-render the child component
@@ -254,7 +242,7 @@ describe('useSubscription', () => {
254
242
expect ( subscriptions [ 0 ] ) . toBe ( observableA ) ;
255
243
256
244
// Unsetting the subscriber prop should reset subscribed values
257
- await act ( ( ) => renderer . update ( < Subscription source = { observableB } /> ) ) ;
245
+ await act ( ( ) => root . render ( < Subscription source = { observableB } /> ) ) ;
258
246
assertLog ( [ 'b-0' ] ) ;
259
247
expect ( subscriptions ) . toHaveLength ( 2 ) ;
260
248
expect ( subscriptions [ 1 ] ) . toBe ( observableB ) ;
@@ -328,19 +316,17 @@ describe('useSubscription', () => {
328
316
const observableA = createBehaviorSubject ( 'a-0' ) ;
329
317
const observableB = createBehaviorSubject ( 'b-0' ) ;
330
318
331
- let renderer ;
319
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
332
320
await act ( ( ) => {
333
- renderer = ReactTestRenderer . create ( < Parent observed = { observableA } /> , {
334
- isConcurrent : true ,
335
- } ) ;
321
+ root . render ( < Parent observed = { observableA } /> ) ;
336
322
} ) ;
337
323
assertLog ( [ 'Child: a-0' , 'Grandchild: a-0' ] ) ;
338
324
expect ( log ) . toEqual ( [ 'Parent.componentDidMount' ] ) ;
339
325
340
326
// Start React update, but don't finish
341
327
await act ( async ( ) => {
342
328
React . startTransition ( ( ) => {
343
- renderer . update ( < Parent observed = { observableB } /> ) ;
329
+ root . render ( < Parent observed = { observableB } /> ) ;
344
330
} ) ;
345
331
346
332
await waitFor ( [ 'Child: b-0' ] ) ;
@@ -353,7 +339,7 @@ describe('useSubscription', () => {
353
339
} ) ;
354
340
355
341
// Update again
356
- await act ( ( ) => renderer . update ( < Parent observed = { observableA } /> ) ) ;
342
+ await act ( ( ) => root . render ( < Parent observed = { observableA } /> ) ) ;
357
343
358
344
// Flush everything and ensure that the correct subscribable is used
359
345
// We expect the last emitted update to be rendered (because of the commit phase value check)
@@ -431,11 +417,9 @@ describe('useSubscription', () => {
431
417
const observableA = createBehaviorSubject ( 'a-0' ) ;
432
418
const observableB = createBehaviorSubject ( 'b-0' ) ;
433
419
434
- let renderer ;
420
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
435
421
await act ( ( ) => {
436
- renderer = ReactTestRenderer . create ( < Parent observed = { observableA } /> , {
437
- isConcurrent : true ,
438
- } ) ;
422
+ root . render ( < Parent observed = { observableA } /> ) ;
439
423
} ) ;
440
424
assertLog ( [ 'Child: a-0' , 'Grandchild: a-0' ] ) ;
441
425
expect ( log ) . toEqual ( [ 'Parent.componentDidMount:a-0' ] ) ;
@@ -444,7 +428,7 @@ describe('useSubscription', () => {
444
428
// Start React update, but don't finish
445
429
await act ( async ( ) => {
446
430
React . startTransition ( ( ) => {
447
- renderer . update ( < Parent observed = { observableB } /> ) ;
431
+ root . render ( < Parent observed = { observableB } /> ) ;
448
432
} ) ;
449
433
await waitFor ( [ 'Child: b-0' ] ) ;
450
434
expect ( log ) . toEqual ( [ ] ) ;
@@ -456,10 +440,10 @@ describe('useSubscription', () => {
456
440
// Update again
457
441
if ( gate ( flags => flags . enableUnifiedSyncLane ) ) {
458
442
React . startTransition ( ( ) => {
459
- renderer . update ( < Parent observed = { observableA } /> ) ;
443
+ root . render ( < Parent observed = { observableA } /> ) ;
460
444
} ) ;
461
445
} else {
462
- renderer . update ( < Parent observed = { observableA } /> ) ;
446
+ root . render ( < Parent observed = { observableA } /> ) ;
463
447
}
464
448
465
449
// Flush everything and ensure that the correct subscribable is used
@@ -524,16 +508,13 @@ describe('useSubscription', () => {
524
508
525
509
eventHandler . subscribe ( async value => {
526
510
if ( value === false ) {
527
- renderer . unmount ( ) ;
511
+ root . unmount ( ) ;
528
512
}
529
513
} ) ;
530
514
531
- let renderer ;
515
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
532
516
await act ( ( ) => {
533
- renderer = ReactTestRenderer . create (
534
- < Subscription source = { eventHandler } /> ,
535
- { isConcurrent : true } ,
536
- ) ;
517
+ root . render ( < Subscription source = { eventHandler } /> ) ;
537
518
} ) ;
538
519
assertLog ( [ true ] ) ;
539
520
@@ -562,18 +543,13 @@ describe('useSubscription', () => {
562
543
return null ;
563
544
}
564
545
565
- let renderer ;
546
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
566
547
await act ( ( ) => {
567
- renderer = ReactTestRenderer . create (
568
- < Subscription subscription = { subscription1 } /> ,
569
- { isConcurrent : true } ,
570
- ) ;
548
+ root . render ( < Subscription subscription = { subscription1 } /> ) ;
571
549
} ) ;
572
550
await waitForAll ( [ ] ) ;
573
551
574
- await act ( ( ) =>
575
- renderer . update ( < Subscription subscription = { subscription2 } /> ) ,
576
- ) ;
552
+ await act ( ( ) => root . render ( < Subscription subscription = { subscription2 } /> ) ) ;
577
553
await waitForAll ( [ ] ) ;
578
554
} ) ;
579
555
@@ -599,15 +575,15 @@ describe('useSubscription', () => {
599
575
return value ;
600
576
} ;
601
577
578
+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
602
579
await act ( async ( ) => {
603
580
// Initial render of "A"
604
581
mutate ( 'A' ) ;
605
- ReactTestRenderer . create (
582
+ root . render (
606
583
< React . Fragment >
607
584
< Subscriber id = "first" />
608
585
< Subscriber id = "second" />
609
586
</ React . Fragment > ,
610
- { isConcurrent : true } ,
611
587
) ;
612
588
await waitForAll ( [ 'render:first:A' , 'render:second:A' ] ) ;
613
589
0 commit comments