Skip to content

Commit aaaa5fe

Browse files
committed
Check next render works
1 parent ed2fc01 commit aaaa5fe

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

packages/react-dom/src/__tests__/ReactDOMConsoleErrorReporting-test.js

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ describe('ReactDOMConsoleErrorReporting', () => {
1313
let ReactDOM;
1414

1515
let ErrorBoundary;
16+
let NoError;
1617
let container;
1718
let windowOnError;
1819

@@ -34,6 +35,9 @@ describe('ReactDOMConsoleErrorReporting', () => {
3435
return this.props.children;
3536
}
3637
};
38+
NoError = function() {
39+
return <h1>OK</h1>;
40+
};
3741
container = document.createElement('div');
3842
document.body.appendChild(container);
3943
windowOnError = jest.fn();
@@ -125,6 +129,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
125129
],
126130
]);
127131
}
132+
133+
// Check next render doesn't throw.
134+
windowOnError.mockReset();
135+
console.error.calls.reset();
136+
act(() => {
137+
ReactDOM.render(<NoError />, container);
138+
});
139+
expect(container.textContent).toBe('OK');
140+
expect(windowOnError.mock.calls).toEqual([]);
141+
if (__DEV__) {
142+
expect(console.error.calls.all().map(c => c.args)).toEqual([
143+
[expect.stringContaining('ReactDOM.render is no longer supported')],
144+
]);
145+
}
128146
});
129147

130148
it('logs render errors without an error boundary', () => {
@@ -178,6 +196,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
178196
],
179197
]);
180198
}
199+
200+
// Check next render doesn't throw.
201+
windowOnError.mockReset();
202+
console.error.calls.reset();
203+
act(() => {
204+
ReactDOM.render(<NoError />, container);
205+
});
206+
expect(container.textContent).toBe('OK');
207+
expect(windowOnError.mock.calls).toEqual([]);
208+
if (__DEV__) {
209+
expect(console.error.calls.all().map(c => c.args)).toEqual([
210+
[expect.stringContaining('ReactDOM.render is no longer supported')],
211+
]);
212+
}
181213
});
182214

183215
it('logs render errors with an error boundary', () => {
@@ -234,6 +266,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
234266
],
235267
]);
236268
}
269+
270+
// Check next render doesn't throw.
271+
windowOnError.mockReset();
272+
console.error.calls.reset();
273+
act(() => {
274+
ReactDOM.render(<NoError />, container);
275+
});
276+
expect(container.textContent).toBe('OK');
277+
expect(windowOnError.mock.calls).toEqual([]);
278+
if (__DEV__) {
279+
expect(console.error.calls.all().map(c => c.args)).toEqual([
280+
[expect.stringContaining('ReactDOM.render is no longer supported')],
281+
]);
282+
}
237283
});
238284

239285
// TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -291,6 +337,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
291337
],
292338
]);
293339
}
340+
341+
// Check next render doesn't throw.
342+
windowOnError.mockReset();
343+
console.error.calls.reset();
344+
act(() => {
345+
ReactDOM.render(<NoError />, container);
346+
});
347+
expect(container.textContent).toBe('OK');
348+
expect(windowOnError.mock.calls).toEqual([]);
349+
if (__DEV__) {
350+
expect(console.error.calls.all().map(c => c.args)).toEqual([
351+
[expect.stringContaining('ReactDOM.render is no longer supported')],
352+
]);
353+
}
294354
});
295355

296356
// TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -351,6 +411,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
351411
],
352412
]);
353413
}
414+
415+
// Check next render doesn't throw.
416+
windowOnError.mockReset();
417+
console.error.calls.reset();
418+
act(() => {
419+
ReactDOM.render(<NoError />, container);
420+
});
421+
expect(container.textContent).toBe('OK');
422+
expect(windowOnError.mock.calls).toEqual([]);
423+
if (__DEV__) {
424+
expect(console.error.calls.all().map(c => c.args)).toEqual([
425+
[expect.stringContaining('ReactDOM.render is no longer supported')],
426+
]);
427+
}
354428
});
355429

356430
// TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -408,6 +482,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
408482
],
409483
]);
410484
}
485+
486+
// Check next render doesn't throw.
487+
windowOnError.mockReset();
488+
console.error.calls.reset();
489+
act(() => {
490+
ReactDOM.render(<NoError />, container);
491+
});
492+
expect(container.textContent).toBe('OK');
493+
expect(windowOnError.mock.calls).toEqual([]);
494+
if (__DEV__) {
495+
expect(console.error.calls.all().map(c => c.args)).toEqual([
496+
[expect.stringContaining('ReactDOM.render is no longer supported')],
497+
]);
498+
}
411499
});
412500

413501
// TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -468,6 +556,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
468556
],
469557
]);
470558
}
559+
560+
// Check next render doesn't throw.
561+
windowOnError.mockReset();
562+
console.error.calls.reset();
563+
act(() => {
564+
ReactDOM.render(<NoError />, container);
565+
});
566+
expect(container.textContent).toBe('OK');
567+
expect(windowOnError.mock.calls).toEqual([]);
568+
if (__DEV__) {
569+
expect(console.error.calls.all().map(c => c.args)).toEqual([
570+
[expect.stringContaining('ReactDOM.render is no longer supported')],
571+
]);
572+
}
471573
});
472574
});
473575
});

0 commit comments

Comments
 (0)