Files
react-native/Libraries/LogBox/UI/__tests__/LogBoxInspectorFooter-test.js
T
Rick Hanlon fe82f402a9 LogBox - Rework how fatals and syntax errors are handled
Summary:
This diff makes a few changes to how errors and warnings are handled in LogBox:

- Soft errors continue to notify the user collapsed.
- Fatal errors pop up full screen over the content, but are dismissible.
- Syntax errors pop up full screen, and are **not** dismissible.
- Removed the "Reload" button on fatals, and added back the dismiss/close.
- Removed all buttons from syntax errors so users are encouraged to fix it and safe without reloading.

To do this we needed to:
- Move the selectedLogIndex state out of the component and up to the rest of the log state.
- Change the way popping a log works, it's now done by setting selectedLogIndex at log time instead of deriving it at render time, that means `selectedLogIndex` is now the sole state value for deciding if the log inspector is open or not
- Whenever the state is updated, find a syntax error if it's there, instead of doing this at render time

Changelog: [Internal]

Reviewed By: cpojer

Differential Revision: D18421089

fbshipit-source-id: d2c4937f666f1302ed1a7b1b9c6679b0509136c5
2019-11-11 16:12:43 -08:00

67 lines
1.5 KiB
JavaScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @emails oncall+react_native
* @flow
*/
'use strict';
const React = require('react');
const LogBoxInspectorFooter = require('../LogBoxInspectorFooter').default;
const render = require('../../../../jest/renderer');
describe('LogBoxInspectorFooter', () => {
it('should render two buttons for warning', () => {
const output = render.shallowRender(
<LogBoxInspectorFooter
onMinimize={() => {}}
onDismiss={() => {}}
level="warn"
/>,
);
expect(output).toMatchSnapshot();
});
it('should render two buttons for error', () => {
const output = render.shallowRender(
<LogBoxInspectorFooter
onMinimize={() => {}}
onDismiss={() => {}}
level="error"
/>,
);
expect(output).toMatchSnapshot();
});
it('should render two buttons for fatal', () => {
const output = render.shallowRender(
<LogBoxInspectorFooter
onMinimize={() => {}}
onDismiss={() => {}}
level="fatal"
/>,
);
expect(output).toMatchSnapshot();
});
it('should render no buttons and a message for syntax error', () => {
const output = render.shallowRender(
<LogBoxInspectorFooter
onMinimize={() => {}}
onDismiss={() => {}}
level="syntax"
/>,
);
expect(output).toMatchSnapshot();
});
});