Skip to content

Commit a649267

Browse files
committed
Add tests for forwardRef too
1 parent 3039c6f commit a649267

File tree

1 file changed

+63
-1
lines changed

1 file changed

+63
-1
lines changed

packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1368,7 +1368,7 @@ describe('ReactHooks', () => {
13681368
});
13691369

13701370
// Regression test for https://github.com/facebook/react/issues/14790
1371-
it('does not fire a false positive warning when suspending', async () => {
1371+
it('does not fire a false positive warning when suspending memo', async () => {
13721372
const {Suspense, useState, useRef} = React;
13731373

13741374
let wasSuspended = false;
@@ -1397,4 +1397,66 @@ describe('ReactHooks', () => {
13971397
await Promise.resolve();
13981398
expect(root).toMatchRenderedOutput('hello');
13991399
});
1400+
1401+
// Regression test for https://github.com/facebook/react/issues/14790
1402+
it('does not fire a false positive warning when suspending forwardRef', async () => {
1403+
const {Suspense, useState, useRef} = React;
1404+
1405+
let wasSuspended = false;
1406+
function trySuspend() {
1407+
if (!wasSuspended) {
1408+
throw new Promise(resolve => {
1409+
wasSuspended = true;
1410+
resolve();
1411+
});
1412+
}
1413+
}
1414+
1415+
function render(props, ref) {
1416+
React.useState();
1417+
trySuspend();
1418+
return 'hello';
1419+
}
1420+
1421+
const Wrapper = React.forwardRef(render);
1422+
const root = ReactTestRenderer.create(
1423+
<Suspense fallback="loading">
1424+
<Wrapper />
1425+
</Suspense>,
1426+
);
1427+
expect(root).toMatchRenderedOutput('loading');
1428+
await Promise.resolve();
1429+
expect(root).toMatchRenderedOutput('hello');
1430+
});
1431+
1432+
// Regression test for https://github.com/facebook/react/issues/14790
1433+
it('does not fire a false positive warning when suspending memo(forwardRef)', async () => {
1434+
const {Suspense, useState, useRef} = React;
1435+
1436+
let wasSuspended = false;
1437+
function trySuspend() {
1438+
if (!wasSuspended) {
1439+
throw new Promise(resolve => {
1440+
wasSuspended = true;
1441+
resolve();
1442+
});
1443+
}
1444+
}
1445+
1446+
function render(props, ref) {
1447+
React.useState();
1448+
trySuspend();
1449+
return 'hello';
1450+
}
1451+
1452+
const Wrapper = React.memo(React.forwardRef(render));
1453+
const root = ReactTestRenderer.create(
1454+
<Suspense fallback="loading">
1455+
<Wrapper />
1456+
</Suspense>,
1457+
);
1458+
expect(root).toMatchRenderedOutput('loading');
1459+
await Promise.resolve();
1460+
expect(root).toMatchRenderedOutput('hello');
1461+
});
14001462
});

0 commit comments

Comments
 (0)