Skip to content

Commit 7dbe217

Browse files
jackpopeAndyPengc12
authored andcommitted
Remove RTR usage from useSubscription-test (facebook#28388)
## Summary Cleaning up internal usage of ReactTestRenderer ## How did you test this change? `yarn test packages/use-subscription/src/__tests__/useSubscription-test.js`
1 parent 0eb58ad commit 7dbe217

File tree

1 file changed

+31
-55
lines changed

1 file changed

+31
-55
lines changed

packages/use-subscription/src/__tests__/useSubscription-test.js

+31-55
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ let act;
1313
let useSubscription;
1414
let BehaviorSubject;
1515
let React;
16-
let ReactTestRenderer;
16+
let ReactDOMClient;
1717
let Scheduler;
1818
let ReplaySubject;
1919
let 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

Comments
 (0)