@testing-library/react-native 12.2.1 → 12.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -3
- package/.DS_Store +0 -0
- package/.codecov.yml +0 -9
- package/.eslintcache +0 -1
- package/.eslintignore +0 -3
- package/.eslintrc +0 -19
- package/.flowconfig +0 -63
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -14
- package/.github/ISSUE_TEMPLATE/question.md +0 -9
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
- package/.github/actions/setup-deps/action.yml +0 -22
- package/.github/actions/setup-website-deps/action.yml +0 -22
- package/.github/dependabot.yml +0 -10
- package/.github/workflows/deploy-website.yml +0 -36
- package/.github/workflows/example-apps.yml +0 -25
- package/.github/workflows/main.yml +0 -103
- package/.gitignore +0 -11
- package/.prettierrc.js +0 -5
- package/CODE_OF_CONDUCT.md +0 -73
- package/CONTRIBUTING.md +0 -64
- package/babel.config.js +0 -22
- package/examples/basic/.expo/README.md +0 -15
- package/examples/basic/.expo/packager-info.json +0 -4
- package/examples/basic/.expo/settings.json +0 -10
- package/examples/basic/.expo-shared/assets.json +0 -4
- package/examples/basic/.gitignore +0 -14
- package/examples/basic/App.tsx +0 -20
- package/examples/basic/README.md +0 -11
- package/examples/basic/__tests__/App.test.tsx +0 -137
- package/examples/basic/app.json +0 -31
- package/examples/basic/assets/adaptive-icon.png +0 -0
- package/examples/basic/assets/favicon.png +0 -0
- package/examples/basic/assets/icon.png +0 -0
- package/examples/basic/assets/splash.png +0 -0
- package/examples/basic/babel.config.js +0 -6
- package/examples/basic/components/Home.tsx +0 -28
- package/examples/basic/components/LoginForm.tsx +0 -138
- package/examples/basic/jest-setup.ts +0 -7
- package/examples/basic/jest.config.js +0 -5
- package/examples/basic/package.json +0 -30
- package/examples/basic/tsconfig.json +0 -7
- package/examples/basic/yarn.lock +0 -7499
- package/examples/react-navigation/README.md +0 -16
- package/examples/react-navigation/babel.config.js +0 -4
- package/examples/react-navigation/jest-setup.js +0 -11
- package/examples/react-navigation/jest.config.js +0 -10
- package/examples/react-navigation/package.json +0 -31
- package/examples/react-navigation/src/App.js +0 -21
- package/examples/react-navigation/src/DrawerNavigator.js +0 -15
- package/examples/react-navigation/src/DrawerNavigator.test.js +0 -42
- package/examples/react-navigation/src/NativeStackNavigator.js +0 -15
- package/examples/react-navigation/src/NativeStackNavigator.test.js +0 -34
- package/examples/react-navigation/src/StackNavigator.js +0 -15
- package/examples/react-navigation/src/StackNavigator.test.js +0 -34
- package/examples/react-navigation/src/TabNavigator.js +0 -15
- package/examples/react-navigation/src/TabNavigator.test.js +0 -21
- package/examples/react-navigation/src/screens/DetailsScreen.js +0 -43
- package/examples/react-navigation/src/screens/DetailsScreen.test.js +0 -27
- package/examples/react-navigation/src/screens/DrawerHomeScreen.js +0 -26
- package/examples/react-navigation/src/screens/HomeScreen.js +0 -48
- package/examples/react-navigation/src/screens/SettingsScreen.js +0 -20
- package/examples/react-navigation/src/test-utils.js +0 -12
- package/examples/react-navigation/yarn.lock +0 -5018
- package/examples/redux/App.js +0 -27
- package/examples/redux/README.md +0 -5
- package/examples/redux/actions/todoActions.js +0 -25
- package/examples/redux/babel.config.js +0 -6
- package/examples/redux/components/AddTodo.js +0 -73
- package/examples/redux/components/AddTodo.test.js +0 -27
- package/examples/redux/components/TodoElem.js +0 -25
- package/examples/redux/components/TodoList.js +0 -29
- package/examples/redux/components/TodoList.test.js +0 -34
- package/examples/redux/index.js +0 -8
- package/examples/redux/jest-setup.js +0 -2
- package/examples/redux/jest.config.js +0 -4
- package/examples/redux/package.json +0 -23
- package/examples/redux/reducers/index.js +0 -6
- package/examples/redux/reducers/todoReducer.js +0 -27
- package/examples/redux/store.js +0 -10
- package/examples/redux/test-utils.js +0 -11
- package/examples/redux/yarn.lock +0 -4819
- package/experiments-app/.expo/README.md +0 -15
- package/experiments-app/.expo/devices.json +0 -3
- package/experiments-app/.expo/packager-info.json +0 -9
- package/experiments-app/.expo/settings.json +0 -9
- package/experiments-app/.gitignore +0 -17
- package/experiments-app/.prettierrc.js +0 -5
- package/experiments-app/app.json +0 -30
- package/experiments-app/assets/adaptive-icon.png +0 -0
- package/experiments-app/assets/favicon.png +0 -0
- package/experiments-app/assets/icon.png +0 -0
- package/experiments-app/assets/splash.png +0 -0
- package/experiments-app/babel.config.js +0 -6
- package/experiments-app/index.js +0 -4
- package/experiments-app/package.json +0 -29
- package/experiments-app/src/App.tsx +0 -31
- package/experiments-app/src/MainScreen.tsx +0 -52
- package/experiments-app/src/experiments.ts +0 -35
- package/experiments-app/src/screens/FlatListEvents.tsx +0 -57
- package/experiments-app/src/screens/ScrollViewEvents.tsx +0 -65
- package/experiments-app/src/screens/SectionListEvents.tsx +0 -91
- package/experiments-app/src/screens/TextInputEventPropagation.tsx +0 -42
- package/experiments-app/src/screens/TextInputEvents.tsx +0 -48
- package/experiments-app/src/utils/helpers.ts +0 -18
- package/experiments-app/tsconfig.json +0 -6
- package/experiments-app/yarn.lock +0 -6709
- package/experiments-rtl/.babelrc +0 -8
- package/experiments-rtl/.eslintrc.json +0 -3
- package/experiments-rtl/.gitignore +0 -35
- package/experiments-rtl/README.md +0 -34
- package/experiments-rtl/jest-setup.js +0 -1
- package/experiments-rtl/jest.config.js +0 -4
- package/experiments-rtl/next.config.js +0 -4
- package/experiments-rtl/package.json +0 -38
- package/experiments-rtl/postcss.config.js +0 -6
- package/experiments-rtl/public/next.svg +0 -1
- package/experiments-rtl/public/vercel.svg +0 -1
- package/experiments-rtl/src/app/__tests__/click.test.tsx +0 -31
- package/experiments-rtl/src/app/__tests__/managed-text-input.test.tsx +0 -51
- package/experiments-rtl/src/app/globals.css +0 -27
- package/experiments-rtl/src/app/layout.tsx +0 -22
- package/experiments-rtl/src/app/page.tsx +0 -113
- package/experiments-rtl/tailwind.config.ts +0 -20
- package/experiments-rtl/tsconfig.json +0 -28
- package/experiments-rtl/yarn.lock +0 -5418
- package/flow-typed/npm/jest_v26.x.x.js +0 -1218
- package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -81
- package/jest-setup.ts +0 -10
- package/renovate.json +0 -19
- package/scripts/test_react_17 +0 -12
- package/src/__tests__/__snapshots__/render-debug.test.tsx.snap +0 -548
- package/src/__tests__/__snapshots__/render.test.tsx.snap +0 -39
- package/src/__tests__/act.test.tsx +0 -56
- package/src/__tests__/auto-cleanup-skip.test.tsx +0 -39
- package/src/__tests__/auto-cleanup.test.tsx +0 -50
- package/src/__tests__/cleanup.test.tsx +0 -26
- package/src/__tests__/config.test.ts +0 -55
- package/src/__tests__/fireEvent-textInput.test.tsx +0 -154
- package/src/__tests__/fireEvent.test.tsx +0 -485
- package/src/__tests__/host-component-names.test.tsx +0 -109
- package/src/__tests__/host-text-nesting.test.tsx +0 -90
- package/src/__tests__/jest-native.test.tsx +0 -84
- package/src/__tests__/questionsBoard.test.tsx +0 -62
- package/src/__tests__/react-native-api.test.tsx +0 -126
- package/src/__tests__/render-debug.test.tsx +0 -207
- package/src/__tests__/render-stringValidation.test.tsx +0 -157
- package/src/__tests__/render.test.tsx +0 -256
- package/src/__tests__/renderHook.test.tsx +0 -114
- package/src/__tests__/screen.test.tsx +0 -66
- package/src/__tests__/timerUtils.ts +0 -7
- package/src/__tests__/timers.test.ts +0 -27
- package/src/__tests__/waitFor.test.tsx +0 -327
- package/src/__tests__/waitForElementToBeRemoved.test.tsx +0 -151
- package/src/__tests__/within.test.tsx +0 -96
- package/src/act.ts +0 -86
- package/src/cleanup.ts +0 -15
- package/src/config.ts +0 -72
- package/src/fireEvent.ts +0 -159
- package/src/flush-micro-tasks.ts +0 -30
- package/src/helpers/__tests__/accessiblity.test.tsx +0 -373
- package/src/helpers/__tests__/component-tree.test.tsx +0 -226
- package/src/helpers/__tests__/format-default.tsx +0 -114
- package/src/helpers/__tests__/getTextContent.test.tsx +0 -49
- package/src/helpers/__tests__/includeHiddenElements.test.tsx +0 -39
- package/src/helpers/__tests__/query-name.test.ts +0 -10
- package/src/helpers/__tests__/timers.test.ts +0 -8
- package/src/helpers/accessiblity.ts +0 -108
- package/src/helpers/component-tree.ts +0 -94
- package/src/helpers/debugDeep.ts +0 -27
- package/src/helpers/debugShallow.ts +0 -22
- package/src/helpers/deprecation.ts +0 -53
- package/src/helpers/errors.ts +0 -66
- package/src/helpers/findAll.ts +0 -70
- package/src/helpers/format-default.ts +0 -72
- package/src/helpers/format.ts +0 -47
- package/src/helpers/getTextContent.ts +0 -20
- package/src/helpers/host-component-names.tsx +0 -88
- package/src/helpers/matchers/__tests__/matchArrayValue.test.ts +0 -34
- package/src/helpers/matchers/__tests__/matchObject.test.ts +0 -37
- package/src/helpers/matchers/__tests__/matchStringValue.test.ts +0 -15
- package/src/helpers/matchers/accessibilityState.ts +0 -48
- package/src/helpers/matchers/accessibilityValue.ts +0 -24
- package/src/helpers/matchers/matchArrayProp.ts +0 -21
- package/src/helpers/matchers/matchLabelText.ts +0 -50
- package/src/helpers/matchers/matchObjectProp.ts +0 -25
- package/src/helpers/matchers/matchStringProp.ts +0 -23
- package/src/helpers/matchers/matchTextContent.ts +0 -20
- package/src/helpers/pointer-events.ts +0 -27
- package/src/helpers/query-name.ts +0 -4
- package/src/helpers/stringValidation.ts +0 -36
- package/src/helpers/timers.ts +0 -98
- package/src/index.ts +0 -33
- package/src/matches.ts +0 -49
- package/src/pure.ts +0 -27
- package/src/queries/__tests__/a11yState.test.tsx +0 -439
- package/src/queries/__tests__/a11yValue.test.tsx +0 -309
- package/src/queries/__tests__/displayValue.test.tsx +0 -221
- package/src/queries/__tests__/hintText.test.tsx +0 -177
- package/src/queries/__tests__/labelText.test.tsx +0 -242
- package/src/queries/__tests__/makeQueries.test.tsx +0 -235
- package/src/queries/__tests__/placeholderText.test.tsx +0 -136
- package/src/queries/__tests__/role-value.test.tsx +0 -176
- package/src/queries/__tests__/role.test.tsx +0 -824
- package/src/queries/__tests__/testId.test.tsx +0 -200
- package/src/queries/__tests__/text.test.tsx +0 -556
- package/src/queries/a11yState.ts +0 -127
- package/src/queries/a11yValue.ts +0 -127
- package/src/queries/displayValue.ts +0 -71
- package/src/queries/hintText.ts +0 -107
- package/src/queries/labelText.ts +0 -57
- package/src/queries/makeQueries.ts +0 -255
- package/src/queries/options.ts +0 -14
- package/src/queries/placeholderText.ts +0 -72
- package/src/queries/role.ts +0 -131
- package/src/queries/testId.ts +0 -66
- package/src/queries/text.ts +0 -63
- package/src/queries/unsafeProps.ts +0 -76
- package/src/queries/unsafeType.ts +0 -73
- package/src/react-versions.ts +0 -11
- package/src/render-act.ts +0 -19
- package/src/render.tsx +0 -183
- package/src/renderHook.tsx +0 -56
- package/src/screen.ts +0 -123
- package/src/shallow.ts +0 -18
- package/src/test-utils/events.ts +0 -24
- package/src/test-utils/index.ts +0 -1
- package/src/user-event/__tests__/__snapshots__/clear.test.tsx.snap +0 -269
- package/src/user-event/__tests__/clear.test.tsx +0 -217
- package/src/user-event/clear.ts +0 -59
- package/src/user-event/event-builder/common.ts +0 -66
- package/src/user-event/event-builder/index.ts +0 -7
- package/src/user-event/event-builder/text-input.ts +0 -86
- package/src/user-event/index.ts +0 -18
- package/src/user-event/press/__tests__/longPress.real-timers.test.tsx +0 -117
- package/src/user-event/press/__tests__/longPress.test.tsx +0 -157
- package/src/user-event/press/__tests__/press.real-timers.test.tsx +0 -320
- package/src/user-event/press/__tests__/press.test.tsx +0 -457
- package/src/user-event/press/constants.ts +0 -7
- package/src/user-event/press/index.ts +0 -1
- package/src/user-event/press/press.ts +0 -163
- package/src/user-event/setup/index.ts +0 -2
- package/src/user-event/setup/setup.ts +0 -142
- package/src/user-event/type/__tests__/__snapshots__/type-managed.test.tsx.snap +0 -339
- package/src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap +0 -668
- package/src/user-event/type/__tests__/parseKeys.test.ts +0 -23
- package/src/user-event/type/__tests__/type-managed.test.tsx +0 -120
- package/src/user-event/type/__tests__/type.test.tsx +0 -335
- package/src/user-event/type/index.ts +0 -1
- package/src/user-event/type/parseKeys.ts +0 -41
- package/src/user-event/type/type.ts +0 -138
- package/src/user-event/utils/__tests__/dispatch-event.test.tsx +0 -41
- package/src/user-event/utils/__tests__/wait.test.ts +0 -62
- package/src/user-event/utils/content-size.ts +0 -25
- package/src/user-event/utils/dispatch-event.ts +0 -38
- package/src/user-event/utils/host-components.ts +0 -6
- package/src/user-event/utils/index.ts +0 -6
- package/src/user-event/utils/text-range.ts +0 -4
- package/src/user-event/utils/wait.ts +0 -15
- package/src/user-event/utils/warn-about-real-timers.ts +0 -13
- package/src/waitFor.ts +0 -228
- package/src/waitForElementToBeRemoved.ts +0 -42
- package/src/within.ts +0 -30
- package/tsconfig.json +0 -17
- package/tsconfig.release.json +0 -8
- package/website/.gitignore +0 -20
- package/website/README.md +0 -33
- package/website/docker/.dockerignore +0 -3
- package/website/docker/Dockerfile +0 -9
- package/website/docker/docker-compose.yml +0 -11
- package/website/docs/API.md +0 -940
- package/website/docs/EslintPLluginTestingLibrary.md +0 -28
- package/website/docs/FAQ.md +0 -44
- package/website/docs/GettingStarted.md +0 -100
- package/website/docs/HowShouldIQuery.md +0 -21
- package/website/docs/MigrationV11.md +0 -64
- package/website/docs/MigrationV12.md +0 -67
- package/website/docs/MigrationV2.md +0 -126
- package/website/docs/MigrationV7.md +0 -119
- package/website/docs/MigrationV9.md +0 -67
- package/website/docs/Queries.md +0 -572
- package/website/docs/ReactNavigation.md +0 -371
- package/website/docs/ReduxIntegration.md +0 -137
- package/website/docs/TestingEnvironment.md +0 -154
- package/website/docs/Troubleshooting.md +0 -44
- package/website/docs/UnderstandingAct.md +0 -227
- package/website/docs/UserEvent.md +0 -191
- package/website/docusaurus.config.js +0 -114
- package/website/package.json +0 -31
- package/website/sidebars.js +0 -20
- package/website/src/components/Feature.js +0 -31
- package/website/src/css/custom.css +0 -13
- package/website/src/css/index.module.css +0 -77
- package/website/src/pages/index.js +0 -82
- package/website/static/.nojekyll +0 -0
- package/website/static/css/custom.css +0 -28
- package/website/static/img/hit.png +0 -0
- package/website/static/img/locomotive.png +0 -0
- package/website/static/img/owl.png +0 -0
- package/website/static/img/tools.png +0 -0
- package/website/yarn.lock +0 -7669
- package/yarn.lock +0 -7765
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { Text } from 'react-native';
|
|
3
|
-
import act from '../act';
|
|
4
|
-
import render from '../render';
|
|
5
|
-
import fireEvent from '../fireEvent';
|
|
6
|
-
|
|
7
|
-
type UseEffectProps = { callback(): void };
|
|
8
|
-
const UseEffect = ({ callback }: UseEffectProps) => {
|
|
9
|
-
React.useEffect(callback);
|
|
10
|
-
return null;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const Counter = () => {
|
|
14
|
-
const [count, setCount] = React.useState(0);
|
|
15
|
-
|
|
16
|
-
const text = `Total count: ${count}`;
|
|
17
|
-
return <Text onPress={() => setCount(count + 1)}>{text}</Text>;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
test('render should trigger useEffect', () => {
|
|
21
|
-
const effectCallback = jest.fn();
|
|
22
|
-
render(<UseEffect callback={effectCallback} />);
|
|
23
|
-
|
|
24
|
-
expect(effectCallback).toHaveBeenCalledTimes(1);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test('update should trigger useEffect', () => {
|
|
28
|
-
const effectCallback = jest.fn();
|
|
29
|
-
const { update } = render(<UseEffect callback={effectCallback} />);
|
|
30
|
-
update(<UseEffect callback={effectCallback} />);
|
|
31
|
-
|
|
32
|
-
expect(effectCallback).toHaveBeenCalledTimes(2);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
test('fireEvent should trigger useState', () => {
|
|
36
|
-
const { getByText } = render(<Counter />);
|
|
37
|
-
const counter = getByText(/Total count/i);
|
|
38
|
-
|
|
39
|
-
expect(counter.props.children).toEqual('Total count: 0');
|
|
40
|
-
fireEvent.press(counter);
|
|
41
|
-
expect(counter.props.children).toEqual('Total count: 1');
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test('should be able to not await act', async () => {
|
|
45
|
-
const result = act(() => {});
|
|
46
|
-
expect(result).toHaveProperty('then');
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
test('should be able to await act', async () => {
|
|
50
|
-
const result = await act(async () => {});
|
|
51
|
-
expect(result).toBe(undefined);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test('should be able to await act when promise rejects', async () => {
|
|
55
|
-
await expect(act(async () => Promise.reject('error'))).rejects.toBe('error');
|
|
56
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { View } from 'react-native';
|
|
3
|
-
|
|
4
|
-
let render: (element: React.ReactElement) => void;
|
|
5
|
-
beforeAll(() => {
|
|
6
|
-
process.env.RNTL_SKIP_AUTO_CLEANUP = 'true';
|
|
7
|
-
const rntl = require('..');
|
|
8
|
-
render = rntl.render;
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
let isMounted = false;
|
|
12
|
-
|
|
13
|
-
class Test extends React.Component<{ onUnmount?(): void }> {
|
|
14
|
-
componentDidMount() {
|
|
15
|
-
isMounted = true;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
componentWillUnmount() {
|
|
19
|
-
isMounted = false;
|
|
20
|
-
if (this.props.onUnmount) {
|
|
21
|
-
this.props.onUnmount();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
render() {
|
|
25
|
-
return <View />;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// This just verifies that by importing RNTL in pure mode in an environment which supports
|
|
30
|
-
// afterEach (like jest) we won't get automatic cleanup between tests.
|
|
31
|
-
test('component is mounted, but not umounted before test ends', () => {
|
|
32
|
-
const fn = jest.fn();
|
|
33
|
-
render(<Test onUnmount={fn} />);
|
|
34
|
-
expect(fn).not.toHaveBeenCalled();
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
test('component is NOT automatically umounted after first test ends', () => {
|
|
38
|
-
expect(isMounted).toEqual(true);
|
|
39
|
-
});
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { View } from 'react-native';
|
|
3
|
-
import { render } from '..';
|
|
4
|
-
|
|
5
|
-
let isMounted = false;
|
|
6
|
-
|
|
7
|
-
class Test extends React.Component<{ onUnmount?(): void }> {
|
|
8
|
-
componentDidMount() {
|
|
9
|
-
isMounted = true;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
componentWillUnmount() {
|
|
13
|
-
isMounted = false;
|
|
14
|
-
if (this.props.onUnmount) {
|
|
15
|
-
this.props.onUnmount();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
render() {
|
|
19
|
-
return <View />;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
afterEach(() => {
|
|
24
|
-
jest.useRealTimers();
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
// This just verifies that by importing RNTL in an environment which supports afterEach (like jest)
|
|
28
|
-
// we'll get automatic cleanup between tests.
|
|
29
|
-
test('component is mounted, but not umounted before test ends', () => {
|
|
30
|
-
const fn = jest.fn();
|
|
31
|
-
render(<Test onUnmount={fn} />);
|
|
32
|
-
expect(isMounted).toEqual(true);
|
|
33
|
-
expect(fn).not.toHaveBeenCalled();
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test('component is automatically umounted after first test ends', () => {
|
|
37
|
-
expect(isMounted).toEqual(false);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
test('does not time out with legacy fake timers', () => {
|
|
41
|
-
jest.useFakeTimers({ legacyFakeTimers: true });
|
|
42
|
-
render(<Test />);
|
|
43
|
-
expect(isMounted).toEqual(true);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('does not time out with fake timers', () => {
|
|
47
|
-
jest.useFakeTimers();
|
|
48
|
-
render(<Test />);
|
|
49
|
-
expect(isMounted).toEqual(true);
|
|
50
|
-
});
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-multi-comp */
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { View } from 'react-native';
|
|
4
|
-
import { cleanup, render } from '../pure';
|
|
5
|
-
|
|
6
|
-
class Test extends React.Component<{ onUnmount: () => void }> {
|
|
7
|
-
componentWillUnmount() {
|
|
8
|
-
if (this.props.onUnmount) {
|
|
9
|
-
this.props.onUnmount();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
render() {
|
|
13
|
-
return <View />;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
test('cleanup', () => {
|
|
18
|
-
const fn = jest.fn();
|
|
19
|
-
|
|
20
|
-
render(<Test onUnmount={fn} />);
|
|
21
|
-
render(<Test onUnmount={fn} />);
|
|
22
|
-
expect(fn).not.toHaveBeenCalled();
|
|
23
|
-
|
|
24
|
-
cleanup();
|
|
25
|
-
expect(fn).toHaveBeenCalledTimes(2);
|
|
26
|
-
});
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getConfig,
|
|
3
|
-
configure,
|
|
4
|
-
resetToDefaults,
|
|
5
|
-
configureInternal,
|
|
6
|
-
} from '../config';
|
|
7
|
-
|
|
8
|
-
test('getConfig() returns existing configuration', () => {
|
|
9
|
-
expect(getConfig().asyncUtilTimeout).toEqual(1000);
|
|
10
|
-
expect(getConfig().defaultIncludeHiddenElements).toEqual(false);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
test('configure() overrides existing config values', () => {
|
|
14
|
-
configure({ asyncUtilTimeout: 5000 });
|
|
15
|
-
configure({ defaultDebugOptions: { message: 'debug message' } });
|
|
16
|
-
expect(getConfig()).toEqual({
|
|
17
|
-
asyncUtilTimeout: 5000,
|
|
18
|
-
defaultDebugOptions: { message: 'debug message' },
|
|
19
|
-
defaultIncludeHiddenElements: false,
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
test('resetToDefaults() resets config to defaults', () => {
|
|
24
|
-
configure({
|
|
25
|
-
asyncUtilTimeout: 5000,
|
|
26
|
-
defaultIncludeHiddenElements: true,
|
|
27
|
-
});
|
|
28
|
-
expect(getConfig().asyncUtilTimeout).toEqual(5000);
|
|
29
|
-
expect(getConfig().defaultIncludeHiddenElements).toEqual(true);
|
|
30
|
-
|
|
31
|
-
resetToDefaults();
|
|
32
|
-
expect(getConfig().asyncUtilTimeout).toEqual(1000);
|
|
33
|
-
expect(getConfig().defaultIncludeHiddenElements).toEqual(false);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test('resetToDefaults() resets internal config to defaults', () => {
|
|
37
|
-
configureInternal({
|
|
38
|
-
hostComponentNames: { text: 'A', textInput: 'A', switch: 'A' },
|
|
39
|
-
});
|
|
40
|
-
expect(getConfig().hostComponentNames).toEqual({
|
|
41
|
-
text: 'A',
|
|
42
|
-
textInput: 'A',
|
|
43
|
-
switch: 'A',
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
resetToDefaults();
|
|
47
|
-
expect(getConfig().hostComponentNames).toBe(undefined);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test('configure handles alias option defaultHidden', () => {
|
|
51
|
-
expect(getConfig().defaultIncludeHiddenElements).toEqual(false);
|
|
52
|
-
|
|
53
|
-
configure({ defaultHidden: true });
|
|
54
|
-
expect(getConfig().defaultIncludeHiddenElements).toEqual(true);
|
|
55
|
-
});
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Text, TextInput, TextInputProps } from 'react-native';
|
|
3
|
-
import { render, fireEvent } from '..';
|
|
4
|
-
|
|
5
|
-
function WrappedTextInput(props: TextInputProps) {
|
|
6
|
-
return <TextInput {...props} />;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function DoubleWrappedTextInput(props: TextInputProps) {
|
|
10
|
-
return <WrappedTextInput {...props} />;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const layoutEvent = { nativeEvent: { layout: { width: 100, height: 100 } } };
|
|
14
|
-
|
|
15
|
-
test('should fire only non-touch-related events on non-editable TextInput', () => {
|
|
16
|
-
const onFocus = jest.fn();
|
|
17
|
-
const onChangeText = jest.fn();
|
|
18
|
-
const onSubmitEditing = jest.fn();
|
|
19
|
-
const onLayout = jest.fn();
|
|
20
|
-
|
|
21
|
-
const view = render(
|
|
22
|
-
<TextInput
|
|
23
|
-
editable={false}
|
|
24
|
-
testID="subject"
|
|
25
|
-
onFocus={onFocus}
|
|
26
|
-
onChangeText={onChangeText}
|
|
27
|
-
onSubmitEditing={onSubmitEditing}
|
|
28
|
-
onLayout={onLayout}
|
|
29
|
-
/>
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
const subject = view.getByTestId('subject');
|
|
33
|
-
fireEvent(subject, 'focus');
|
|
34
|
-
fireEvent.changeText(subject, 'Text');
|
|
35
|
-
fireEvent(subject, 'submitEditing', { nativeEvent: { text: 'Text' } });
|
|
36
|
-
fireEvent(subject, 'layout', layoutEvent);
|
|
37
|
-
|
|
38
|
-
expect(onFocus).not.toHaveBeenCalled();
|
|
39
|
-
expect(onChangeText).not.toHaveBeenCalled();
|
|
40
|
-
expect(onSubmitEditing).not.toHaveBeenCalled();
|
|
41
|
-
expect(onLayout).toHaveBeenCalledWith(layoutEvent);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test('should fire only non-touch-related events on non-editable TextInput with nested Text', () => {
|
|
45
|
-
const onFocus = jest.fn();
|
|
46
|
-
const onChangeText = jest.fn();
|
|
47
|
-
const onSubmitEditing = jest.fn();
|
|
48
|
-
const onLayout = jest.fn();
|
|
49
|
-
|
|
50
|
-
const view = render(
|
|
51
|
-
<TextInput
|
|
52
|
-
editable={false}
|
|
53
|
-
testID="subject"
|
|
54
|
-
onFocus={onFocus}
|
|
55
|
-
onChangeText={onChangeText}
|
|
56
|
-
onSubmitEditing={onSubmitEditing}
|
|
57
|
-
onLayout={onLayout}
|
|
58
|
-
>
|
|
59
|
-
<Text>Nested Text</Text>
|
|
60
|
-
</TextInput>
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
const subject = view.getByText('Nested Text');
|
|
64
|
-
fireEvent(subject, 'focus');
|
|
65
|
-
fireEvent(subject, 'onFocus');
|
|
66
|
-
fireEvent.changeText(subject, 'Text');
|
|
67
|
-
fireEvent(subject, 'submitEditing', { nativeEvent: { text: 'Text' } });
|
|
68
|
-
fireEvent(subject, 'onSubmitEditing', { nativeEvent: { text: 'Text' } });
|
|
69
|
-
fireEvent(subject, 'layout', layoutEvent);
|
|
70
|
-
fireEvent(subject, 'onLayout', layoutEvent);
|
|
71
|
-
|
|
72
|
-
expect(onFocus).not.toHaveBeenCalled();
|
|
73
|
-
expect(onChangeText).not.toHaveBeenCalled();
|
|
74
|
-
expect(onSubmitEditing).not.toHaveBeenCalled();
|
|
75
|
-
expect(onLayout).toHaveBeenCalledTimes(2);
|
|
76
|
-
expect(onLayout).toHaveBeenCalledWith(layoutEvent);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Historically there were problems with custom TextInput wrappers, as they
|
|
81
|
-
* could creat a hierarchy of three or more composite text input views with
|
|
82
|
-
* very similar event props.
|
|
83
|
-
*
|
|
84
|
-
* Typical hierarchy would be:
|
|
85
|
-
* - User composite TextInput
|
|
86
|
-
* - UI library composite TextInput
|
|
87
|
-
* - RN composite TextInput
|
|
88
|
-
* - RN host TextInput
|
|
89
|
-
*
|
|
90
|
-
* Previous implementation of fireEvent only checked `editable` prop for
|
|
91
|
-
* RN TextInputs, both host & composite but did not check on the UI library or
|
|
92
|
-
* user composite TextInput level, hence invoking the event handlers that
|
|
93
|
-
* should be blocked by `editable={false}` prop.
|
|
94
|
-
*/
|
|
95
|
-
test('should fire only non-touch-related events on non-editable wrapped TextInput', () => {
|
|
96
|
-
const onFocus = jest.fn();
|
|
97
|
-
const onChangeText = jest.fn();
|
|
98
|
-
const onSubmitEditing = jest.fn();
|
|
99
|
-
const onLayout = jest.fn();
|
|
100
|
-
|
|
101
|
-
const view = render(
|
|
102
|
-
<WrappedTextInput
|
|
103
|
-
editable={false}
|
|
104
|
-
testID="subject"
|
|
105
|
-
onFocus={onFocus}
|
|
106
|
-
onChangeText={onChangeText}
|
|
107
|
-
onSubmitEditing={onSubmitEditing}
|
|
108
|
-
onLayout={onLayout}
|
|
109
|
-
/>
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
const subject = view.getByTestId('subject');
|
|
113
|
-
fireEvent(subject, 'focus');
|
|
114
|
-
fireEvent.changeText(subject, 'Text');
|
|
115
|
-
fireEvent(subject, 'submitEditing', { nativeEvent: { text: 'Text' } });
|
|
116
|
-
fireEvent(subject, 'layout', layoutEvent);
|
|
117
|
-
|
|
118
|
-
expect(onFocus).not.toHaveBeenCalled();
|
|
119
|
-
expect(onChangeText).not.toHaveBeenCalled();
|
|
120
|
-
expect(onSubmitEditing).not.toHaveBeenCalled();
|
|
121
|
-
expect(onLayout).toHaveBeenCalledWith(layoutEvent);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Ditto testing for even deeper hierarchy of TextInput wrappers.
|
|
126
|
-
*/
|
|
127
|
-
test('should fire only non-touch-related events on non-editable double wrapped TextInput', () => {
|
|
128
|
-
const onFocus = jest.fn();
|
|
129
|
-
const onChangeText = jest.fn();
|
|
130
|
-
const onSubmitEditing = jest.fn();
|
|
131
|
-
const onLayout = jest.fn();
|
|
132
|
-
|
|
133
|
-
const view = render(
|
|
134
|
-
<DoubleWrappedTextInput
|
|
135
|
-
editable={false}
|
|
136
|
-
testID="subject"
|
|
137
|
-
onFocus={onFocus}
|
|
138
|
-
onChangeText={onChangeText}
|
|
139
|
-
onSubmitEditing={onSubmitEditing}
|
|
140
|
-
onLayout={onLayout}
|
|
141
|
-
/>
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
const subject = view.getByTestId('subject');
|
|
145
|
-
fireEvent(subject, 'focus');
|
|
146
|
-
fireEvent.changeText(subject, 'Text');
|
|
147
|
-
fireEvent(subject, 'submitEditing', { nativeEvent: { text: 'Text' } });
|
|
148
|
-
fireEvent(subject, 'layout', layoutEvent);
|
|
149
|
-
|
|
150
|
-
expect(onFocus).not.toHaveBeenCalled();
|
|
151
|
-
expect(onChangeText).not.toHaveBeenCalled();
|
|
152
|
-
expect(onSubmitEditing).not.toHaveBeenCalled();
|
|
153
|
-
expect(onLayout).toHaveBeenCalledWith(layoutEvent);
|
|
154
|
-
});
|