Skip to content

Commit faea69c

Browse files
author
Jack Pope
committed
f
1 parent 28a6baf commit faea69c

File tree

1 file changed

+29
-45
lines changed

1 file changed

+29
-45
lines changed

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

Lines changed: 29 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -46,61 +46,45 @@ describe('ErrorBoundaryReconciliation', () => {
4646
fail ? <InvalidType /> : <span prop="BrokenRender" />;
4747
});
4848

49-
async function sharedTest(ErrorBoundary, fallbackTagName, isConcurrent) {
50-
let renderer;
49+
[true, false].forEach(isConcurrent => {
50+
async function sharedTest(ErrorBoundary, fallbackTagName) {
51+
let renderer;
5152

52-
await act(() => {
53-
renderer = ReactTestRenderer.create(
54-
<ErrorBoundary fallbackTagName={fallbackTagName}>
55-
<BrokenRender fail={false} />
56-
</ErrorBoundary>,
57-
{unstable_isConcurrent: isConcurrent},
58-
);
59-
});
60-
expect(renderer).toMatchRenderedOutput(<span prop="BrokenRender" />);
61-
62-
await expect(async () => {
6353
await act(() => {
64-
renderer.update(
54+
renderer = ReactTestRenderer.create(
6555
<ErrorBoundary fallbackTagName={fallbackTagName}>
66-
<BrokenRender fail={true} />
56+
<BrokenRender fail={false} />
6757
</ErrorBoundary>,
58+
{unstable_isConcurrent: isConcurrent},
6859
);
6960
});
70-
}).toErrorDev(isConcurrent ? ['invalid', 'invalid'] : ['invalid']);
71-
const Fallback = fallbackTagName;
72-
expect(renderer).toMatchRenderedOutput(<Fallback prop="ErrorBoundary" />);
73-
}
61+
expect(renderer).toMatchRenderedOutput(<span prop="BrokenRender" />);
7462

75-
describe('isConcurrent', () => {
76-
it('componentDidCatch can recover by rendering an element of the same type', () =>
77-
sharedTest(DidCatchErrorBoundary, 'span', true));
63+
await expect(async () => {
64+
await act(() => {
65+
renderer.update(
66+
<ErrorBoundary fallbackTagName={fallbackTagName}>
67+
<BrokenRender fail={true} />
68+
</ErrorBoundary>,
69+
);
70+
});
71+
}).toErrorDev(['invalid', 'invalid']);
72+
const Fallback = fallbackTagName;
73+
expect(renderer).toMatchRenderedOutput(<Fallback prop="ErrorBoundary" />);
74+
}
7875

79-
it('componentDidCatch can recover by rendering an element of a different type', () =>
80-
sharedTest(DidCatchErrorBoundary, 'div', true));
76+
describe(isConcurrent ? 'concurrent' : 'sync', () => {
77+
it('componentDidCatch can recover by rendering an element of the same type', () =>
78+
sharedTest(DidCatchErrorBoundary, 'span'));
8179

82-
it('getDerivedStateFromError can recover by rendering an element of the same type', () =>
83-
sharedTest(GetDerivedErrorBoundary, 'span', true));
84-
85-
it('getDerivedStateFromError can recover by rendering an element of a different type', () =>
86-
sharedTest(GetDerivedErrorBoundary, 'div', true));
87-
});
80+
it('componentDidCatch can recover by rendering an element of a different type', () =>
81+
sharedTest(DidCatchErrorBoundary, 'div'));
8882

89-
describe('legacy', () => {
90-
// @gate !disableLegacyMode
91-
it('componentDidCatch can recover by rendering an element of the same type', () =>
92-
sharedTest(DidCatchErrorBoundary, 'span', false));
83+
it('getDerivedStateFromError can recover by rendering an element of the same type', () =>
84+
sharedTest(GetDerivedErrorBoundary, 'span'));
9385

94-
// @gate !disableLegacyMode
95-
it('componentDidCatch can recover by rendering an element of a different type', () =>
96-
sharedTest(DidCatchErrorBoundary, 'div', false));
97-
98-
// @gate !disableLegacyMode
99-
it('getDerivedStateFromError can recover by rendering an element of the same type', () =>
100-
sharedTest(GetDerivedErrorBoundary, 'span', false));
101-
102-
// @gate !disableLegacyMode
103-
it('getDerivedStateFromError can recover by rendering an element of a different type', () =>
104-
sharedTest(GetDerivedErrorBoundary, 'div', false));
86+
it('getDerivedStateFromError can recover by rendering an element of a different type', () =>
87+
sharedTest(GetDerivedErrorBoundary, 'div'));
88+
});
10589
});
10690
});

0 commit comments

Comments
 (0)