@@ -13,7 +13,7 @@ let act;
1313let useSubscription ;
1414let BehaviorSubject ;
1515let React ;
16- let ReactTestRenderer ;
16+ let ReactDOMClient ;
1717let Scheduler ;
1818let ReplaySubject ;
1919let assertLog ;
@@ -27,7 +27,7 @@ describe('useSubscription', () => {
2727
2828 useSubscription = require ( 'use-subscription' ) . useSubscription ;
2929 React = require ( 'react' ) ;
30- ReactTestRenderer = require ( 'react-test-renderer ' ) ;
30+ ReactDOMClient = require ( 'react-dom/client ' ) ;
3131 Scheduler = require ( 'scheduler' ) ;
3232
3333 act = require ( 'internal-test-utils' ) . act ;
@@ -80,12 +80,9 @@ describe('useSubscription', () => {
8080 }
8181
8282 const observable = createBehaviorSubject ( ) ;
83- let renderer ;
83+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
8484 await act ( ( ) => {
85- renderer = ReactTestRenderer . create (
86- < Subscription source = { observable } /> ,
87- { isConcurrent : true } ,
88- ) ;
85+ root . render ( < Subscription source = { observable } /> ) ;
8986 } ) ;
9087 assertLog ( [ 'default' ] ) ;
9188
@@ -96,7 +93,7 @@ describe('useSubscription', () => {
9693 assertLog ( [ 'abc' ] ) ;
9794
9895 // Unmounting the subscriber should remove listeners
99- await act ( ( ) => renderer . update ( < div /> ) ) ;
96+ await act ( ( ) => root . render ( < div /> ) ) ;
10097 await act ( ( ) => observable . next ( 456 ) ) ;
10198 await waitForAll ( [ ] ) ;
10299 } ) ;
@@ -132,12 +129,9 @@ describe('useSubscription', () => {
132129 }
133130
134131 let observable = createReplaySubject ( 'initial' ) ;
135- let renderer ;
132+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
136133 await act ( ( ) => {
137- renderer = ReactTestRenderer . create (
138- < Subscription source = { observable } /> ,
139- { isConcurrent : true } ,
140- ) ;
134+ root . render ( < Subscription source = { observable } /> ) ;
141135 } ) ;
142136 assertLog ( [ 'initial' ] ) ;
143137 await act ( ( ) => observable . next ( 'updated' ) ) ;
@@ -147,7 +141,7 @@ describe('useSubscription', () => {
147141
148142 // Unsetting the subscriber prop should reset subscribed values
149143 observable = createReplaySubject ( undefined ) ;
150- await act ( ( ) => renderer . update ( < Subscription source = { observable } /> ) ) ;
144+ await act ( ( ) => root . render ( < Subscription source = { observable } /> ) ) ;
151145 assertLog ( [ 'default' ] ) ;
152146 } ) ;
153147
@@ -181,12 +175,9 @@ describe('useSubscription', () => {
181175
182176 expect ( subscriptions ) . toHaveLength ( 0 ) ;
183177
184- let renderer ;
178+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
185179 await act ( ( ) => {
186- renderer = ReactTestRenderer . create (
187- < Subscription source = { observableA } /> ,
188- { isConcurrent : true } ,
189- ) ;
180+ root . render ( < Subscription source = { observableA } /> ) ;
190181 } ) ;
191182
192183 // Updates while subscribed should re-render the child component
@@ -195,7 +186,7 @@ describe('useSubscription', () => {
195186 expect ( subscriptions [ 0 ] ) . toBe ( observableA ) ;
196187
197188 // Unsetting the subscriber prop should reset subscribed values
198- await act ( ( ) => renderer . update ( < Subscription source = { observableB } /> ) ) ;
189+ await act ( ( ) => root . render ( < Subscription source = { observableB } /> ) ) ;
199190
200191 assertLog ( [ 'b-0' ] ) ;
201192 expect ( subscriptions ) . toHaveLength ( 2 ) ;
@@ -240,12 +231,9 @@ describe('useSubscription', () => {
240231
241232 expect ( subscriptions ) . toHaveLength ( 0 ) ;
242233
243- let renderer ;
234+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
244235 await act ( ( ) => {
245- renderer = ReactTestRenderer . create (
246- < Subscription source = { observableA } /> ,
247- { isConcurrent : true } ,
248- ) ;
236+ root . render ( < Subscription source = { observableA } /> ) ;
249237 } ) ;
250238
251239 // Updates while subscribed should re-render the child component
@@ -254,7 +242,7 @@ describe('useSubscription', () => {
254242 expect ( subscriptions [ 0 ] ) . toBe ( observableA ) ;
255243
256244 // Unsetting the subscriber prop should reset subscribed values
257- await act ( ( ) => renderer . update ( < Subscription source = { observableB } /> ) ) ;
245+ await act ( ( ) => root . render ( < Subscription source = { observableB } /> ) ) ;
258246 assertLog ( [ 'b-0' ] ) ;
259247 expect ( subscriptions ) . toHaveLength ( 2 ) ;
260248 expect ( subscriptions [ 1 ] ) . toBe ( observableB ) ;
@@ -328,19 +316,17 @@ describe('useSubscription', () => {
328316 const observableA = createBehaviorSubject ( 'a-0' ) ;
329317 const observableB = createBehaviorSubject ( 'b-0' ) ;
330318
331- let renderer ;
319+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
332320 await act ( ( ) => {
333- renderer = ReactTestRenderer . create ( < Parent observed = { observableA } /> , {
334- isConcurrent : true ,
335- } ) ;
321+ root . render ( < Parent observed = { observableA } /> ) ;
336322 } ) ;
337323 assertLog ( [ 'Child: a-0' , 'Grandchild: a-0' ] ) ;
338324 expect ( log ) . toEqual ( [ 'Parent.componentDidMount' ] ) ;
339325
340326 // Start React update, but don't finish
341327 await act ( async ( ) => {
342328 React . startTransition ( ( ) => {
343- renderer . update ( < Parent observed = { observableB } /> ) ;
329+ root . render ( < Parent observed = { observableB } /> ) ;
344330 } ) ;
345331
346332 await waitFor ( [ 'Child: b-0' ] ) ;
@@ -353,7 +339,7 @@ describe('useSubscription', () => {
353339 } ) ;
354340
355341 // Update again
356- await act ( ( ) => renderer . update ( < Parent observed = { observableA } /> ) ) ;
342+ await act ( ( ) => root . render ( < Parent observed = { observableA } /> ) ) ;
357343
358344 // Flush everything and ensure that the correct subscribable is used
359345 // We expect the last emitted update to be rendered (because of the commit phase value check)
@@ -431,11 +417,9 @@ describe('useSubscription', () => {
431417 const observableA = createBehaviorSubject ( 'a-0' ) ;
432418 const observableB = createBehaviorSubject ( 'b-0' ) ;
433419
434- let renderer ;
420+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
435421 await act ( ( ) => {
436- renderer = ReactTestRenderer . create ( < Parent observed = { observableA } /> , {
437- isConcurrent : true ,
438- } ) ;
422+ root . render ( < Parent observed = { observableA } /> ) ;
439423 } ) ;
440424 assertLog ( [ 'Child: a-0' , 'Grandchild: a-0' ] ) ;
441425 expect ( log ) . toEqual ( [ 'Parent.componentDidMount:a-0' ] ) ;
@@ -444,7 +428,7 @@ describe('useSubscription', () => {
444428 // Start React update, but don't finish
445429 await act ( async ( ) => {
446430 React . startTransition ( ( ) => {
447- renderer . update ( < Parent observed = { observableB } /> ) ;
431+ root . render ( < Parent observed = { observableB } /> ) ;
448432 } ) ;
449433 await waitFor ( [ 'Child: b-0' ] ) ;
450434 expect ( log ) . toEqual ( [ ] ) ;
@@ -456,10 +440,10 @@ describe('useSubscription', () => {
456440 // Update again
457441 if ( gate ( flags => flags . enableUnifiedSyncLane ) ) {
458442 React . startTransition ( ( ) => {
459- renderer . update ( < Parent observed = { observableA } /> ) ;
443+ root . render ( < Parent observed = { observableA } /> ) ;
460444 } ) ;
461445 } else {
462- renderer . update ( < Parent observed = { observableA } /> ) ;
446+ root . render ( < Parent observed = { observableA } /> ) ;
463447 }
464448
465449 // Flush everything and ensure that the correct subscribable is used
@@ -524,16 +508,13 @@ describe('useSubscription', () => {
524508
525509 eventHandler . subscribe ( async value => {
526510 if ( value === false ) {
527- renderer . unmount ( ) ;
511+ root . unmount ( ) ;
528512 }
529513 } ) ;
530514
531- let renderer ;
515+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
532516 await act ( ( ) => {
533- renderer = ReactTestRenderer . create (
534- < Subscription source = { eventHandler } /> ,
535- { isConcurrent : true } ,
536- ) ;
517+ root . render ( < Subscription source = { eventHandler } /> ) ;
537518 } ) ;
538519 assertLog ( [ true ] ) ;
539520
@@ -562,18 +543,13 @@ describe('useSubscription', () => {
562543 return null ;
563544 }
564545
565- let renderer ;
546+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
566547 await act ( ( ) => {
567- renderer = ReactTestRenderer . create (
568- < Subscription subscription = { subscription1 } /> ,
569- { isConcurrent : true } ,
570- ) ;
548+ root . render ( < Subscription subscription = { subscription1 } /> ) ;
571549 } ) ;
572550 await waitForAll ( [ ] ) ;
573551
574- await act ( ( ) =>
575- renderer . update ( < Subscription subscription = { subscription2 } /> ) ,
576- ) ;
552+ await act ( ( ) => root . render ( < Subscription subscription = { subscription2 } /> ) ) ;
577553 await waitForAll ( [ ] ) ;
578554 } ) ;
579555
@@ -599,15 +575,15 @@ describe('useSubscription', () => {
599575 return value ;
600576 } ;
601577
578+ const root = ReactDOMClient . createRoot ( document . createElement ( 'div' ) ) ;
602579 await act ( async ( ) => {
603580 // Initial render of "A"
604581 mutate ( 'A' ) ;
605- ReactTestRenderer . create (
582+ root . render (
606583 < React . Fragment >
607584 < Subscriber id = "first" />
608585 < Subscriber id = "second" />
609586 </ React . Fragment > ,
610- { isConcurrent : true } ,
611587 ) ;
612588 await waitForAll ( [ 'render:first:A' , 'render:second:A' ] ) ;
613589
0 commit comments