Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
2d37886
RN: Migrate `LogBoxInspectorContainer-test.js` from Shallow Renderer
yungsters Jun 16, 2024
2d99930
RN: Migrate `LogBoxInspectorMessageHeader-test.js` from Shallow Renderer
yungsters Jun 16, 2024
e1888d5
RN: Migrate `LogBoxButton-test.js` from Shallow Renderer
yungsters Jun 16, 2024
896696e
RN: Migrate `LogBoxInspector-test.js` from Shallow Renderer
yungsters Jun 16, 2024
f308298
RN: Migrate `LogBoxInspectorCodeFrame-test.js` from Shallow Renderer
yungsters Jun 16, 2024
324e292
RN: Migrate `LogBoxInspectorFooter-test.js` from Shallow Renderer
yungsters Jun 16, 2024
aaf34d0
RN: Migrate `LogBoxInspectorHeader-test.js` from Shallow Renderer
yungsters Jun 16, 2024
53b0b27
RN: Migrate `LogBoxInspectorReactFrames-test.js` from Shallow Renderer
yungsters Jun 16, 2024
5c5f790
RN: Migrate `LogBoxInspectorSection-test.js` from Shallow Renderer
yungsters Jun 16, 2024
c5eb763
RN: Migrate `LogBoxInspectorSourceMapStatus-test.js` from Shallow Ren…
yungsters Jun 16, 2024
1a583b3
RN: Migrate `LogBoxInspectorStackFrame-test.js` from Shallow Renderer
yungsters Jun 16, 2024
83c90a8
RN: Migrate `LogBoxInspectorStackFrames-test.js` from Shallow Renderer
yungsters Jun 16, 2024
81e1596
RN: Migrate `LogBoxNotification-test.js` from Shallow Renderer
yungsters Jun 16, 2024
4c672c1
RN: Migrate `LogBoxNotificationContainer-test.js` from Shallow Renderer
yungsters Jun 16, 2024
581c93b
RN: Delete Shallow Renderer Cases in `InputAccessoryView-test.js`
yungsters Jun 16, 2024
f6f8a34
'[skip ci] RN: Delete Shallow Renderer Cases in
yungsters Jun 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const View = require('../../View/View');
const InputAccessoryView = require('../InputAccessoryView').default;
const React = require('react');

describe('<InputAccessoryView />', () => {
describe('InputAccessoryView', () => {
it('should render as <RCTInputAccessoryView> when mocked', () => {
const instance = render.create(
<InputAccessoryView nativeID="1">
Expand All @@ -26,26 +26,6 @@ describe('<InputAccessoryView />', () => {
expect(instance).toMatchSnapshot();
});

it('should shallow render as <InputAccessoryView> when mocked', () => {
const output = render.shallow(
<InputAccessoryView nativeID="1">
<View />
</InputAccessoryView>,
);
expect(output).toMatchSnapshot();
});

it('should shallow render as <InputAccessoryView> when not mocked', () => {
jest.dontMock('../InputAccessoryView');

const output = render.shallow(
<InputAccessoryView nativeID="1">
<View />
</InputAccessoryView>,
);
expect(output).toMatchSnapshot();
});

it('should render as <RCTInputAccessoryView> when not mocked', () => {
jest.dontMock('../InputAccessoryView');

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`<InputAccessoryView /> should render as <RCTInputAccessoryView> when mocked 1`] = `
exports[`InputAccessoryView should render as <RCTInputAccessoryView> when mocked 1`] = `
<RCTInputAccessoryView
nativeID="1"
style={
Expand Down Expand Up @@ -29,7 +29,7 @@ exports[`<InputAccessoryView /> should render as <RCTInputAccessoryView> when mo
</RCTInputAccessoryView>
`;

exports[`<InputAccessoryView /> should render as <RCTInputAccessoryView> when not mocked 1`] = `
exports[`InputAccessoryView should render as <RCTInputAccessoryView> when not mocked 1`] = `
<RCTInputAccessoryView
nativeID="1"
style={
Expand Down Expand Up @@ -57,19 +57,3 @@ exports[`<InputAccessoryView /> should render as <RCTInputAccessoryView> when no
</RCTSafeAreaView>
</RCTInputAccessoryView>
`;

exports[`<InputAccessoryView /> should shallow render as <InputAccessoryView> when mocked 1`] = `
<InputAccessoryView
nativeID="1"
>
<View />
</InputAccessoryView>
`;

exports[`<InputAccessoryView /> should shallow render as <InputAccessoryView> when not mocked 1`] = `
<InputAccessoryView
nativeID="1"
>
<View />
</InputAccessoryView>
`;
14 changes: 1 addition & 13 deletions packages/react-native/Libraries/Image/__tests__/Image-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,12 @@ const Image = require('../Image');
const ImageInjection = require('../ImageInjection');
const React = require('react');

describe('<Image />', () => {
describe('Image', () => {
it('should render as <Image> when mocked', () => {
const instance = render.create(<Image source={{uri: 'foo-bar.jpg'}} />);
expect(instance).toMatchSnapshot();
});

it('should shallow render as <Image> when mocked', () => {
const output = render.shallow(<Image source={{uri: 'foo-bar.jpg'}} />);
expect(output).toMatchSnapshot();
});

it('should shallow render as <ForwardRef(Image)> when not mocked', () => {
jest.dontMock('../Image');

const output = render.shallow(<Image source={{uri: 'foo-bar.jpg'}} />);
expect(output).toMatchSnapshot();
});

it('should render as <RCTImageView> when not mocked', () => {
jest.dontMock('../Image');

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`<Image /> should render as <Image> when mocked 1`] = `
exports[`Image should render as <Image> when mocked 1`] = `
<Image
source={
Object {
Expand All @@ -10,7 +10,7 @@ exports[`<Image /> should render as <Image> when mocked 1`] = `
/>
`;

exports[`<Image /> should render as <RCTImageView> when not mocked 1`] = `
exports[`Image should render as <RCTImageView> when not mocked 1`] = `
<RCTImageView
accessibilityState={
Object {
Expand Down Expand Up @@ -39,23 +39,3 @@ exports[`<Image /> should render as <RCTImageView> when not mocked 1`] = `
}
/>
`;

exports[`<Image /> should shallow render as <ForwardRef(Image)> when not mocked 1`] = `
<Image
source={
Object {
"uri": "foo-bar.jpg",
}
}
/>
`;

exports[`<Image /> should shallow render as <Image> when mocked 1`] = `
<Image
source={
Object {
"uri": "foo-bar.jpg",
}
}
/>
`;
78 changes: 8 additions & 70 deletions packages/react-native/Libraries/LogBox/UI/LogBoxInspector.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,40 +9,37 @@
*/

import Keyboard from '../../Components/Keyboard/Keyboard';
import ScrollView from '../../Components/ScrollView/ScrollView';
import View from '../../Components/View/View';
import StyleSheet from '../../StyleSheet/StyleSheet';
import * as LogBoxData from '../Data/LogBoxData';
import LogBoxLog, {type LogLevel} from '../Data/LogBoxLog';
import LogBoxInspectorCodeFrame from './LogBoxInspectorCodeFrame';
import LogBoxInspectorBody from './LogBoxInspectorBody';
import LogBoxInspectorFooter from './LogBoxInspectorFooter';
import LogBoxInspectorHeader from './LogBoxInspectorHeader';
import LogBoxInspectorMessageHeader from './LogBoxInspectorMessageHeader';
import LogBoxInspectorReactFrames from './LogBoxInspectorReactFrames';
import LogBoxInspectorStackFrames from './LogBoxInspectorStackFrames';
import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
import {useEffect} from 'react';

type Props = $ReadOnly<{|
type Props = $ReadOnly<{
onDismiss: () => void,
onChangeSelectedIndex: (index: number) => void,
onMinimize: () => void,
logs: $ReadOnlyArray<LogBoxLog>,
selectedIndex: number,
fatalType?: ?LogLevel,
|}>;
}>;

function LogBoxInspector(props: Props): React.Node {
export default function LogBoxInspector(props: Props): React.Node {
const {logs, selectedIndex} = props;
let log = logs[selectedIndex];

React.useEffect(() => {
useEffect(() => {
if (log) {
LogBoxData.symbolicateLogNow(log);
}
}, [log]);

React.useEffect(() => {
useEffect(() => {
// Optimistically symbolicate the last and next logs.
if (logs.length > 1) {
const selected = selectedIndex;
Expand All @@ -54,7 +51,7 @@ function LogBoxInspector(props: Props): React.Node {
}
}, [logs, selectedIndex]);

React.useEffect(() => {
useEffect(() => {
Keyboard.dismiss();
}, []);

Expand Down Expand Up @@ -84,68 +81,9 @@ function LogBoxInspector(props: Props): React.Node {
);
}

const headerTitleMap = {
warn: 'Console Warning',
error: 'Console Error',
fatal: 'Uncaught Error',
syntax: 'Syntax Error',
component: 'Render Error',
};

function LogBoxInspectorBody(props: {log: LogBoxLog, onRetry: () => void}) {
const [collapsed, setCollapsed] = React.useState(true);

React.useEffect(() => {
setCollapsed(true);
}, [props.log]);

const headerTitle =
props.log.type ??
headerTitleMap[props.log.isComponentError ? 'component' : props.log.level];

if (collapsed) {
return (
<>
<LogBoxInspectorMessageHeader
collapsed={collapsed}
onPress={() => setCollapsed(!collapsed)}
message={props.log.message}
level={props.log.level}
title={headerTitle}
/>
<ScrollView style={styles.scrollBody}>
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
<LogBoxInspectorReactFrames log={props.log} />
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
</ScrollView>
</>
);
}
return (
<ScrollView style={styles.scrollBody}>
<LogBoxInspectorMessageHeader
collapsed={collapsed}
onPress={() => setCollapsed(!collapsed)}
message={props.log.message}
level={props.log.level}
title={headerTitle}
/>
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
<LogBoxInspectorReactFrames log={props.log} />
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
</ScrollView>
);
}

const styles = StyleSheet.create({
root: {
flex: 1,
backgroundColor: LogBoxStyle.getTextColor(),
},
scrollBody: {
backgroundColor: LogBoxStyle.getBackgroundColor(0.9),
flex: 1,
},
});

export default LogBoxInspector;
87 changes: 87 additions & 0 deletions packages/react-native/Libraries/LogBox/UI/LogBoxInspectorBody.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict-local
* @format
*/

import ScrollView from '../../Components/ScrollView/ScrollView';
import StyleSheet from '../../StyleSheet/StyleSheet';
import LogBoxLog from '../Data/LogBoxLog';
import LogBoxInspectorCodeFrame from './LogBoxInspectorCodeFrame';
import LogBoxInspectorMessageHeader from './LogBoxInspectorMessageHeader';
import LogBoxInspectorReactFrames from './LogBoxInspectorReactFrames';
import LogBoxInspectorStackFrames from './LogBoxInspectorStackFrames';
import * as LogBoxStyle from './LogBoxStyle';
import * as React from 'react';
import {useEffect, useState} from 'react';

const headerTitleMap = {
warn: 'Console Warning',
error: 'Console Error',
fatal: 'Uncaught Error',
syntax: 'Syntax Error',
component: 'Render Error',
};

export default function LogBoxInspectorBody(props: {
log: LogBoxLog,
onRetry: () => void,
}): React.Node {
const [collapsed, setCollapsed] = useState(true);

useEffect(() => {
setCollapsed(true);
}, [props.log]);

const headerTitle =
props.log.type ??
headerTitleMap[props.log.isComponentError ? 'component' : props.log.level];

if (collapsed) {
return (
<>
<LogBoxInspectorMessageHeader
collapsed={collapsed}
onPress={() => setCollapsed(!collapsed)}
message={props.log.message}
level={props.log.level}
title={headerTitle}
/>
<ScrollView style={styles.scrollBody}>
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
<LogBoxInspectorReactFrames log={props.log} />
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
</ScrollView>
</>
);
}
return (
<ScrollView style={styles.scrollBody}>
<LogBoxInspectorMessageHeader
collapsed={collapsed}
onPress={() => setCollapsed(!collapsed)}
message={props.log.message}
level={props.log.level}
title={headerTitle}
/>
<LogBoxInspectorCodeFrame codeFrame={props.log.codeFrame} />
<LogBoxInspectorReactFrames log={props.log} />
<LogBoxInspectorStackFrames log={props.log} onRetry={props.onRetry} />
</ScrollView>
);
}

const styles = StyleSheet.create({
root: {
flex: 1,
backgroundColor: LogBoxStyle.getTextColor(),
},
scrollBody: {
backgroundColor: LogBoxStyle.getBackgroundColor(0.9),
flex: 1,
},
});
Loading