Skip to content

Commit 7dd403b

Browse files
refactor: update example apps (#1024)
1 parent 14dba84 commit 7dd403b

18 files changed

+127
-266
lines changed
Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,2 @@
1-
import 'react-native-gesture-handler/jestSetup';
2-
3-
jest.mock('react-native-reanimated', () => {
4-
const Reanimated = require('react-native-reanimated/mock');
5-
6-
// The mock for `call` immediately calls the callback which is incorrect
7-
// So we override it with a no-op
8-
Reanimated.default.call = () => {};
9-
10-
return Reanimated;
11-
});
12-
131
// Silence the warning: Animated: `useNativeDriver` is not supported because the native animated module is missing
142
jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper');
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module.exports = {
22
preset: 'react-native',
3-
setupFiles: ['./jest-setup.js'],
3+
setupFilesAfterEnv: ['./jest-setup.js'],
44
transformIgnorePatterns: [
5-
'node_modules/(?!(jest-)?react-native|@react-native-community|@react-navigation)',
5+
'node_modules/(?!(jest-)?react-native|@react-native|@react-native-community|@react-navigation)',
66
],
77
};

examples/reactnavigation/package.json

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,20 @@
77
"test": "jest"
88
},
99
"dependencies": {
10-
"@react-native-community/masked-view": "^0.1.9",
11-
"@react-navigation/drawer": "^5.11.4",
12-
"@react-navigation/native": "^5.1.6",
13-
"@react-navigation/stack": "^5.2.13",
14-
"prop-types": "^15.7.2",
15-
"react": "^16.13.1",
16-
"react-native": "^0.62.2",
17-
"react-native-gesture-handler": "^1.6.1",
18-
"react-native-reanimated": "^1.8.0",
19-
"react-native-safe-area-context": "^0.7.3",
20-
"react-native-screens": "^2.5.0"
10+
"@react-navigation/native": "^6.0.11",
11+
"@react-navigation/native-stack": "^6.7.0",
12+
"@react-navigation/stack": "^6.2.2",
13+
"react": "^18.0.0",
14+
"react-native": "^0.69.2",
15+
"react-native-safe-area-context": "^4.3.1",
16+
"react-native-screens": "^3.15.0"
2117
},
2218
"devDependencies": {
2319
"@babel/core": "^7.9.0",
24-
"@babel/runtime": "^7.9.2",
25-
"babel-jest": "^25.4.0",
26-
"jest": "^25.4.0",
27-
"metro-react-native-babel-preset": "^0.59.0",
28-
"@testing-library/react-native": "^7.0.0-rc.0",
29-
"react-test-renderer": "^16.13.1"
20+
"@testing-library/react-native": "^11.0.0",
21+
"babel-jest": "^28.0.0",
22+
"jest": "^28.0.0",
23+
"metro-react-native-babel-preset": "^0.70.0",
24+
"react-test-renderer": "^18.0.0"
3025
}
3126
}

examples/reactnavigation/src/App.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import 'react-native-gesture-handler';
21
import React from 'react';
32
import { StatusBar, StyleSheet, View } from 'react-native';
43
import { NavigationContainer } from '@react-navigation/native';
5-
64
import AppNavigator from './AppNavigator';
75

86
export default function App() {
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
import * as React from 'react';
2-
import { createStackNavigator } from '@react-navigation/stack';
3-
2+
import { createNativeStackNavigator } from '@react-navigation/native-stack';
43
import HomeScreen from './screens/HomeScreen';
54
import DetailsScreen from './screens/DetailsScreen';
65

7-
const { Screen, Navigator } = createStackNavigator();
6+
const Stack = createNativeStackNavigator();
87

98
export default function Navigation() {
10-
const options = {};
11-
129
return (
13-
<Navigator>
14-
<Screen name="Home" component={HomeScreen} />
15-
<Screen options={options} name="Details" component={DetailsScreen} />
16-
</Navigator>
10+
<Stack.Navigator>
11+
<Stack.Screen name="Home" component={HomeScreen} />
12+
<Stack.Screen name="Details" component={DetailsScreen} />
13+
</Stack.Navigator>
1714
);
1815
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import * as React from 'react';
2+
import { screen, fireEvent } from '@testing-library/react-native';
3+
import { renderWithNavigation } from './test-utils';
4+
import AppNavigator from './AppNavigator';
5+
6+
test('page contains the header and 10 items', async () => {
7+
renderWithNavigation(<AppNavigator />);
8+
9+
const header = await screen.findByText('List of numbers from 1 to 20');
10+
expect(header).toBeTruthy();
11+
12+
const items = screen.getAllByText(/Item number/);
13+
expect(items.length).toBe(10);
14+
});
15+
16+
test('clicking on one item takes you to the details screen', async () => {
17+
renderWithNavigation(<AppNavigator />);
18+
19+
const toClick = await screen.findByText('Item number 5');
20+
fireEvent(toClick, 'press');
21+
22+
expect(screen.getByText('Showing details for 5')).toBeTruthy();
23+
expect(screen.getByText('the number you have chosen is 5')).toBeTruthy();
24+
});

examples/reactnavigation/src/DrawerApp.js

Lines changed: 0 additions & 13 deletions
This file was deleted.

examples/reactnavigation/src/DrawerAppNavigator.js

Lines changed: 0 additions & 35 deletions
This file was deleted.

examples/reactnavigation/src/__tests__/AppNavigator.test.js

Lines changed: 0 additions & 41 deletions
This file was deleted.

examples/reactnavigation/src/__tests__/DrawerAppNavigator.test.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

examples/reactnavigation/src/screens/HomeScreen.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default function HomeScreen({ navigation }) {
1212
new Array(20).fill(null).map((_, idx) => idx + 1)
1313
);
1414

15-
const onOpacityPress = item => navigation.navigate('Details', item);
15+
const onOpacityPress = (item) => navigation.navigate('Details', item);
1616

1717
return (
1818
<View>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/* eslint-disable import/no-extraneous-dependencies */
2+
import * as React from 'react';
3+
import { NavigationContainer } from '@react-navigation/native';
4+
import { render } from '@testing-library/react-native';
5+
6+
/** Render helper that renders `ui` within `NavigationContainer`. */
7+
export function renderWithNavigation(ui) {
8+
return render(<NavigationContainer>{ui}</NavigationContainer>);
9+
}
Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,27 @@
11
import * as React from 'react';
2-
import { Provider } from 'react-redux';
3-
import { fireEvent, render } from '@testing-library/react-native';
4-
import configureStore from '../store';
2+
import { screen, fireEvent } from '@testing-library/react-native';
3+
import { renderWithRedux } from '../test-utils';
54
import AddTodo from './AddTodo';
65

7-
describe('Application test', () => {
8-
test('adds a new test when entry has been included', () => {
9-
const store = configureStore();
10-
11-
const component = (
12-
<Provider store={store}>
13-
<AddTodo />
14-
</Provider>
15-
);
16-
17-
const { getByPlaceholderText, getByText } = render(component);
18-
19-
const input = getByPlaceholderText(/repository/i);
20-
expect(input).toBeTruthy();
21-
22-
const textToEnter = 'This is a random element';
23-
fireEvent.changeText(input, textToEnter);
24-
fireEvent.press(getByText('Submit form'));
25-
26-
const todosState = store.getState().todos;
27-
28-
expect(todosState.length).toEqual(1);
29-
30-
expect(todosState).toEqual(
31-
expect.arrayContaining([
32-
expect.objectContaining({
33-
id: 1,
34-
text: textToEnter,
35-
date: expect.any(Date),
36-
}),
37-
])
38-
);
39-
});
6+
test('adds a new todo to redux store when submitting form', () => {
7+
const { store } = renderWithRedux(<AddTodo />);
8+
9+
const input = screen.getByPlaceholderText(/repository/i);
10+
expect(input).toBeTruthy();
11+
12+
const textToEnter = 'This is a random element';
13+
fireEvent.changeText(input, textToEnter);
14+
fireEvent.press(screen.getByText('Submit form'));
15+
16+
const todosState = store.getState().todos;
17+
expect(todosState).toHaveLength(1);
18+
expect(todosState).toEqual(
19+
expect.arrayContaining([
20+
expect.objectContaining({
21+
id: 1,
22+
text: textToEnter,
23+
date: expect.any(Date),
24+
}),
25+
])
26+
);
4027
});

0 commit comments

Comments
 (0)