@testing-library/react-native 12.2.1 → 12.3.0
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/build/config.d.ts +1 -0
- package/build/config.js.map +1 -1
- package/build/fireEvent.js +2 -1
- package/build/fireEvent.js.map +1 -1
- package/build/helpers/accessiblity.d.ts +7 -0
- package/build/helpers/accessiblity.js +73 -2
- package/build/helpers/accessiblity.js.map +1 -1
- package/build/helpers/component-tree.d.ts +7 -0
- package/build/helpers/component-tree.js +18 -0
- package/build/helpers/component-tree.js.map +1 -1
- package/build/helpers/format-default.d.ts +1 -2
- package/build/helpers/format-default.js +22 -13
- package/build/helpers/format-default.js.map +1 -1
- package/build/helpers/format.js +1 -4
- package/build/helpers/format.js.map +1 -1
- package/build/helpers/host-component-names.d.ts +5 -0
- package/build/helpers/host-component-names.js +13 -1
- package/build/helpers/host-component-names.js.map +1 -1
- package/build/helpers/matchers/accessibilityState.js +3 -3
- package/build/helpers/matchers/accessibilityState.js.map +1 -1
- package/build/helpers/matchers/accessibilityValue.js +3 -2
- package/build/helpers/matchers/accessibilityValue.js.map +1 -1
- package/build/helpers/matchers/matchLabelText.d.ts +1 -1
- package/build/helpers/matchers/matchLabelText.js +5 -8
- package/build/helpers/matchers/matchLabelText.js.map +1 -1
- package/build/helpers/matchers/matchTextContent.js +2 -2
- package/build/helpers/matchers/matchTextContent.js.map +1 -1
- package/build/helpers/{getTextContent.js → text-content.js} +1 -1
- package/build/helpers/text-content.js.map +1 -0
- package/build/helpers/text-input.d.ts +3 -0
- package/build/helpers/text-input.js +21 -0
- package/build/helpers/text-input.js.map +1 -0
- package/build/matchers/extend-expect.d.js +2 -0
- package/build/matchers/extend-expect.d.js.map +1 -0
- package/build/matchers/extend-expect.d.ts +2 -0
- package/build/matchers/extend-expect.js +26 -0
- package/build/matchers/extend-expect.js.map +1 -0
- package/build/matchers/index.d.ts +9 -0
- package/build/matchers/index.js +75 -0
- package/build/matchers/index.js.map +1 -0
- package/build/matchers/to-be-checked.d.ts +6 -0
- package/build/matchers/to-be-checked.js +31 -0
- package/build/matchers/to-be-checked.js.map +1 -0
- package/build/matchers/to-be-disabled.d.ts +10 -0
- package/build/matchers/to-be-disabled.js +52 -0
- package/build/matchers/to-be-disabled.js.map +1 -0
- package/build/matchers/to-be-empty-element.d.ts +6 -0
- package/build/matchers/to-be-empty-element.js +20 -0
- package/build/matchers/to-be-empty-element.js.map +1 -0
- package/build/matchers/to-be-on-the-screen.d.ts +6 -0
- package/build/matchers/to-be-on-the-screen.js +29 -0
- package/build/matchers/to-be-on-the-screen.js.map +1 -0
- package/build/matchers/to-be-partially-checked.d.ts +6 -0
- package/build/matchers/to-be-partially-checked.js +28 -0
- package/build/matchers/to-be-partially-checked.js.map +1 -0
- package/build/matchers/to-be-visible.d.ts +6 -0
- package/build/matchers/to-be-visible.js +56 -0
- package/build/matchers/to-be-visible.js.map +1 -0
- package/build/matchers/to-have-display-value.d.ts +7 -0
- package/build/matchers/to-have-display-value.js +26 -0
- package/build/matchers/to-have-display-value.js.map +1 -0
- package/build/matchers/to-have-prop.d.ts +6 -0
- package/build/matchers/to-have-prop.js +35 -0
- package/build/matchers/to-have-prop.js.map +1 -0
- package/build/matchers/to-have-text-content.d.ts +7 -0
- package/build/matchers/to-have-text-content.js +21 -0
- package/build/matchers/to-have-text-content.js.map +1 -0
- package/build/matchers/utils.d.ts +18 -0
- package/build/matchers/utils.js +90 -0
- package/build/matchers/utils.js.map +1 -0
- package/build/matches.d.ts +1 -1
- package/build/matches.js.map +1 -1
- package/build/queries/displayValue.js +4 -3
- package/build/queries/displayValue.js.map +1 -1
- package/build/queries/labelText.js +2 -2
- package/build/queries/labelText.js.map +1 -1
- package/build/queries/role.js +1 -1
- package/build/queries/role.js.map +1 -1
- package/build/render.d.ts +12 -48
- package/build/user-event/clear.js +2 -1
- package/build/user-event/clear.js.map +1 -1
- package/build/user-event/press/press.js +2 -1
- package/build/user-event/press/press.js.map +1 -1
- package/build/user-event/type/type.js +2 -1
- package/build/user-event/type/type.js.map +1 -1
- package/build/user-event/utils/index.d.ts +0 -1
- package/build/user-event/utils/index.js +0 -11
- package/build/user-event/utils/index.js.map +1 -1
- package/package.json +6 -23
- 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/build/helpers/getTextContent.js.map +0 -1
- package/build/user-event/utils/host-components.d.ts +0 -2
- package/build/user-event/utils/host-components.js +0 -11
- package/build/user-event/utils/host-components.js.map +0 -1
- 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
- /package/build/helpers/{getTextContent.d.ts → text-content.d.ts} +0 -0
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { StyleSheet, View, Button, Text, TextInput } from 'react-native';
|
|
3
|
-
import { render } from '..';
|
|
4
|
-
import '@testing-library/jest-native/extend-expect';
|
|
5
|
-
|
|
6
|
-
const style = StyleSheet.create({
|
|
7
|
-
style1: {
|
|
8
|
-
color: 'red',
|
|
9
|
-
backgroundColor: 'green',
|
|
10
|
-
},
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
test('jest-native matchers work correctly', () => {
|
|
14
|
-
const { getByText, getByA11yHint } = render(
|
|
15
|
-
<View>
|
|
16
|
-
<Button title="Enabled Button" onPress={jest.fn()} />
|
|
17
|
-
<Button title="Disabled Button" disabled={true} onPress={jest.fn()} />
|
|
18
|
-
<Text accessibilityHint="Empty Text" style={style.style1} />
|
|
19
|
-
<Text accessibilityHint="Not Empty Text">Not empty</Text>
|
|
20
|
-
<View accessibilityHint="Empty View" />
|
|
21
|
-
<View accessibilityHint="Not Empty View">
|
|
22
|
-
<Text />
|
|
23
|
-
</View>
|
|
24
|
-
<View accessibilityHint="Container View">
|
|
25
|
-
<View accessibilityHint="First-Level Child">
|
|
26
|
-
<Text>Second-Level Child</Text>
|
|
27
|
-
</View>
|
|
28
|
-
</View>
|
|
29
|
-
<TextInput
|
|
30
|
-
accessibilityHint="Text Input"
|
|
31
|
-
allowFontScaling={false}
|
|
32
|
-
secureTextEntry={true}
|
|
33
|
-
defaultValue="111"
|
|
34
|
-
/>
|
|
35
|
-
</View>
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
expect(getByText('Enabled Button')).toBeEnabled();
|
|
39
|
-
expect(getByText('Disabled Button')).not.toBeEnabled();
|
|
40
|
-
expect(getByText('Disabled Button')).toBeDisabled();
|
|
41
|
-
expect(getByText('Enabled Button')).not.toBeDisabled();
|
|
42
|
-
|
|
43
|
-
expect(getByA11yHint('Empty Text')).toBeEmptyElement();
|
|
44
|
-
expect(getByA11yHint('Empty View')).toBeEmptyElement();
|
|
45
|
-
expect(getByA11yHint('Not Empty Text')).not.toBeEmptyElement();
|
|
46
|
-
expect(getByA11yHint('Not Empty View')).not.toBeEmptyElement();
|
|
47
|
-
|
|
48
|
-
expect(getByA11yHint('Container View')).toContainElement(
|
|
49
|
-
// $FlowFixMe - TODO: fix @testing-library/jest-native flow typings
|
|
50
|
-
getByA11yHint('First-Level Child')
|
|
51
|
-
);
|
|
52
|
-
expect(getByA11yHint('Container View')).toContainElement(
|
|
53
|
-
// $FlowFixMe - TODO: fix @testing-library/jest-native flow typings
|
|
54
|
-
getByText('Second-Level Child')
|
|
55
|
-
);
|
|
56
|
-
expect(getByA11yHint('Container View')).not.toContainElement(
|
|
57
|
-
// $FlowFixMe - TODO: fix @testing-library/jest-native flow typings
|
|
58
|
-
getByText('Enabled Button')
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
expect(getByA11yHint('Not Empty Text')).toHaveTextContent('Not empty');
|
|
62
|
-
expect(getByA11yHint('Not Empty Text')).toHaveTextContent(/Not empty/);
|
|
63
|
-
expect(getByA11yHint('Not Empty Text')).not.toHaveTextContent('Is empty');
|
|
64
|
-
|
|
65
|
-
expect(getByA11yHint('Empty Text')).toHaveStyle({ color: 'red' });
|
|
66
|
-
expect(getByA11yHint('Empty Text')).toHaveStyle({
|
|
67
|
-
color: 'red',
|
|
68
|
-
backgroundColor: 'green',
|
|
69
|
-
});
|
|
70
|
-
expect(getByA11yHint('Empty Text')).not.toHaveStyle({ color: 'green' });
|
|
71
|
-
expect(getByA11yHint('Empty Text')).not.toHaveStyle({
|
|
72
|
-
color: 'green',
|
|
73
|
-
backgroundColor: 'green',
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
const textInput = getByA11yHint('Text Input');
|
|
77
|
-
expect(textInput).toBeTruthy();
|
|
78
|
-
expect(textInput).toHaveProp('allowFontScaling');
|
|
79
|
-
expect(textInput).toHaveProp('allowFontScaling', false);
|
|
80
|
-
expect(textInput).toHaveProp('secureTextEntry');
|
|
81
|
-
expect(textInput).toHaveProp('secureTextEntry', true);
|
|
82
|
-
expect(textInput).toHaveProp('defaultValue');
|
|
83
|
-
expect(textInput).toHaveProp('defaultValue', '111');
|
|
84
|
-
});
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
View,
|
|
4
|
-
TouchableOpacity,
|
|
5
|
-
Text,
|
|
6
|
-
ScrollView,
|
|
7
|
-
TextInput,
|
|
8
|
-
} from 'react-native';
|
|
9
|
-
import { render, fireEvent } from '..';
|
|
10
|
-
|
|
11
|
-
type QuestionsBoardProps = {
|
|
12
|
-
questions: string[];
|
|
13
|
-
onSubmit: (obj: {}) => void;
|
|
14
|
-
};
|
|
15
|
-
function QuestionsBoard({ questions, onSubmit }: QuestionsBoardProps) {
|
|
16
|
-
const [data, setData] = React.useState({});
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<ScrollView>
|
|
20
|
-
{questions.map((q, index) => {
|
|
21
|
-
return (
|
|
22
|
-
<View key={q}>
|
|
23
|
-
<Text>{q}</Text>
|
|
24
|
-
<TextInput
|
|
25
|
-
accessibilityLabel="answer input"
|
|
26
|
-
accessibilityHint="input"
|
|
27
|
-
onChangeText={(text) => {
|
|
28
|
-
setData((state) => ({
|
|
29
|
-
...state,
|
|
30
|
-
[index + 1]: { q, a: text },
|
|
31
|
-
}));
|
|
32
|
-
}}
|
|
33
|
-
/>
|
|
34
|
-
</View>
|
|
35
|
-
);
|
|
36
|
-
})}
|
|
37
|
-
<TouchableOpacity onPress={() => onSubmit(data)}>
|
|
38
|
-
<Text>Submit</Text>
|
|
39
|
-
</TouchableOpacity>
|
|
40
|
-
</ScrollView>
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
test('form submits two answers', () => {
|
|
45
|
-
const allQuestions = ['q1', 'q2'];
|
|
46
|
-
const mockFn = jest.fn();
|
|
47
|
-
|
|
48
|
-
const { getAllByLabelText, getByText } = render(
|
|
49
|
-
<QuestionsBoard questions={allQuestions} onSubmit={mockFn} />
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
const answerInputs = getAllByLabelText('answer input');
|
|
53
|
-
|
|
54
|
-
fireEvent.changeText(answerInputs[0], 'a1');
|
|
55
|
-
fireEvent.changeText(answerInputs[1], 'a2');
|
|
56
|
-
fireEvent.press(getByText('Submit'));
|
|
57
|
-
|
|
58
|
-
expect(mockFn).toHaveBeenCalledWith({
|
|
59
|
-
'1': { q: 'q1', a: 'a1' },
|
|
60
|
-
'2': { q: 'q2', a: 'a2' },
|
|
61
|
-
});
|
|
62
|
-
});
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { View, Text, TextInput, Switch } from 'react-native';
|
|
3
|
-
import { render } from '..';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Tests in this file are intended to give us an proactive warning that React Native behavior has
|
|
7
|
-
* changed in a way that may impact our code like queries or event handling.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
test('React Native API assumption: <View> renders single host element', () => {
|
|
11
|
-
const view = render(<View testID="test" />);
|
|
12
|
-
|
|
13
|
-
expect(view.toJSON()).toMatchInlineSnapshot(`
|
|
14
|
-
<View
|
|
15
|
-
testID="test"
|
|
16
|
-
/>
|
|
17
|
-
`);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
test('React Native API assumption: <Text> renders single host element', () => {
|
|
21
|
-
const view = render(<Text testID="test">Hello</Text>);
|
|
22
|
-
|
|
23
|
-
expect(view.toJSON()).toMatchInlineSnapshot(`
|
|
24
|
-
<Text
|
|
25
|
-
testID="test"
|
|
26
|
-
>
|
|
27
|
-
Hello
|
|
28
|
-
</Text>
|
|
29
|
-
`);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
test('React Native API assumption: nested <Text> renders single host element', () => {
|
|
33
|
-
const view = render(
|
|
34
|
-
<Text testID="test">
|
|
35
|
-
<Text testID="before">Before</Text>
|
|
36
|
-
Hello
|
|
37
|
-
<Text testID="after">
|
|
38
|
-
<Text testID="deeplyNested">Deeply nested</Text>
|
|
39
|
-
</Text>
|
|
40
|
-
</Text>
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
expect(view.toJSON()).toMatchInlineSnapshot(`
|
|
44
|
-
<Text
|
|
45
|
-
testID="test"
|
|
46
|
-
>
|
|
47
|
-
<Text
|
|
48
|
-
testID="before"
|
|
49
|
-
>
|
|
50
|
-
Before
|
|
51
|
-
</Text>
|
|
52
|
-
Hello
|
|
53
|
-
<Text
|
|
54
|
-
testID="after"
|
|
55
|
-
>
|
|
56
|
-
<Text
|
|
57
|
-
testID="deeplyNested"
|
|
58
|
-
>
|
|
59
|
-
Deeply nested
|
|
60
|
-
</Text>
|
|
61
|
-
</Text>
|
|
62
|
-
</Text>
|
|
63
|
-
`);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
test('React Native API assumption: <TextInput> renders single host element', () => {
|
|
67
|
-
const view = render(
|
|
68
|
-
<TextInput
|
|
69
|
-
testID="test"
|
|
70
|
-
defaultValue="default"
|
|
71
|
-
value="currentValue"
|
|
72
|
-
placeholder="Placeholder"
|
|
73
|
-
/>
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
expect(view.toJSON()).toMatchInlineSnapshot(`
|
|
77
|
-
<TextInput
|
|
78
|
-
defaultValue="default"
|
|
79
|
-
placeholder="Placeholder"
|
|
80
|
-
testID="test"
|
|
81
|
-
value="currentValue"
|
|
82
|
-
/>
|
|
83
|
-
`);
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
test('React Native API assumption: <TextInput> with nested Text renders single host element', () => {
|
|
87
|
-
const view = render(
|
|
88
|
-
<TextInput testID="test" placeholder="Placeholder">
|
|
89
|
-
<Text>Hello</Text>
|
|
90
|
-
</TextInput>
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
expect(view.toJSON()).toMatchInlineSnapshot(`
|
|
94
|
-
<TextInput
|
|
95
|
-
placeholder="Placeholder"
|
|
96
|
-
testID="test"
|
|
97
|
-
>
|
|
98
|
-
<Text>
|
|
99
|
-
Hello
|
|
100
|
-
</Text>
|
|
101
|
-
</TextInput>
|
|
102
|
-
`);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
test('React Native API assumption: <Switch> renders single host element', () => {
|
|
106
|
-
const view = render(
|
|
107
|
-
<Switch testID="test" value={true} onChange={jest.fn()} />
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
expect(view.toJSON()).toMatchInlineSnapshot(`
|
|
111
|
-
<RCTSwitch
|
|
112
|
-
accessibilityRole="switch"
|
|
113
|
-
onChange={[Function]}
|
|
114
|
-
onResponderTerminationRequest={[Function]}
|
|
115
|
-
onStartShouldSetResponder={[Function]}
|
|
116
|
-
style={
|
|
117
|
-
{
|
|
118
|
-
"height": 31,
|
|
119
|
-
"width": 51,
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
testID="test"
|
|
123
|
-
value={true}
|
|
124
|
-
/>
|
|
125
|
-
`);
|
|
126
|
-
});
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { View, Text, TextInput, Pressable } from 'react-native';
|
|
4
|
-
import stripAnsi from 'strip-ansi';
|
|
5
|
-
import { render, fireEvent, configure } from '..';
|
|
6
|
-
|
|
7
|
-
type ConsoleLogMock = jest.Mock<Array<string>>;
|
|
8
|
-
|
|
9
|
-
const PLACEHOLDER_FRESHNESS = 'Add custom freshness';
|
|
10
|
-
const PLACEHOLDER_CHEF = 'Who inspected freshness?';
|
|
11
|
-
const INPUT_FRESHNESS = 'Custom Freshie';
|
|
12
|
-
const INPUT_CHEF = 'I inspected freshie';
|
|
13
|
-
const DEFAULT_INPUT_CHEF = 'What did you inspect?';
|
|
14
|
-
const DEFAULT_INPUT_CUSTOMER = 'What banana?';
|
|
15
|
-
|
|
16
|
-
const ignoreWarnings = ['Using debug("message") is deprecated'];
|
|
17
|
-
|
|
18
|
-
const realConsoleWarn = console.warn;
|
|
19
|
-
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
jest.spyOn(console, 'log').mockImplementation(() => {});
|
|
22
|
-
jest.spyOn(console, 'warn').mockImplementation((message) => {
|
|
23
|
-
if (!ignoreWarnings.some((warning) => message.includes(warning))) {
|
|
24
|
-
realConsoleWarn(message);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
afterEach(() => {
|
|
30
|
-
jest.restoreAllMocks();
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
class MyButton extends React.Component<any> {
|
|
34
|
-
render() {
|
|
35
|
-
return (
|
|
36
|
-
<Pressable onPress={this.props.onPress}>
|
|
37
|
-
<Text>{this.props.children}</Text>
|
|
38
|
-
</Pressable>
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
class Banana extends React.Component<any, { fresh: boolean }> {
|
|
44
|
-
state = {
|
|
45
|
-
fresh: false,
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
componentDidUpdate() {
|
|
49
|
-
if (this.props.onUpdate) {
|
|
50
|
-
this.props.onUpdate();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
componentWillUnmount() {
|
|
55
|
-
if (this.props.onUnmount) {
|
|
56
|
-
this.props.onUnmount();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
changeFresh = () => {
|
|
61
|
-
this.setState((state) => ({
|
|
62
|
-
fresh: !state.fresh,
|
|
63
|
-
}));
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
render() {
|
|
67
|
-
const test = 0;
|
|
68
|
-
return (
|
|
69
|
-
<View>
|
|
70
|
-
<Text>Is the banana fresh?</Text>
|
|
71
|
-
<Text testID="bananaFresh">
|
|
72
|
-
{this.state.fresh ? 'fresh' : 'not fresh'}
|
|
73
|
-
</Text>
|
|
74
|
-
<TextInput
|
|
75
|
-
testID="bananaCustomFreshness"
|
|
76
|
-
placeholder={PLACEHOLDER_FRESHNESS}
|
|
77
|
-
value={INPUT_FRESHNESS}
|
|
78
|
-
/>
|
|
79
|
-
<TextInput
|
|
80
|
-
testID="bananaChef"
|
|
81
|
-
placeholder={PLACEHOLDER_CHEF}
|
|
82
|
-
value={INPUT_CHEF}
|
|
83
|
-
defaultValue={DEFAULT_INPUT_CHEF}
|
|
84
|
-
/>
|
|
85
|
-
<TextInput defaultValue={DEFAULT_INPUT_CUSTOMER} />
|
|
86
|
-
<TextInput defaultValue={'hello'} value="" />
|
|
87
|
-
<MyButton onPress={this.changeFresh} type="primary">
|
|
88
|
-
Change freshness!
|
|
89
|
-
</MyButton>
|
|
90
|
-
<Text testID="duplicateText">First Text</Text>
|
|
91
|
-
<Text testID="duplicateText">Second Text</Text>
|
|
92
|
-
<Text>{test}</Text>
|
|
93
|
-
</View>
|
|
94
|
-
);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
test('debug', () => {
|
|
99
|
-
const { debug } = render(<Banana />);
|
|
100
|
-
|
|
101
|
-
debug();
|
|
102
|
-
debug('my custom message');
|
|
103
|
-
debug.shallow();
|
|
104
|
-
debug.shallow('my other custom message');
|
|
105
|
-
debug({ message: 'another custom message' });
|
|
106
|
-
|
|
107
|
-
const mockCalls = (console.log as any as ConsoleLogMock).mock.calls;
|
|
108
|
-
expect(stripAnsi(mockCalls[0][0])).toMatchSnapshot();
|
|
109
|
-
expect(stripAnsi(mockCalls[1][0] + mockCalls[1][1])).toMatchSnapshot(
|
|
110
|
-
'with message'
|
|
111
|
-
);
|
|
112
|
-
expect(stripAnsi(mockCalls[2][0])).toMatchSnapshot('shallow');
|
|
113
|
-
expect(stripAnsi(mockCalls[3][0] + mockCalls[3][1])).toMatchSnapshot(
|
|
114
|
-
'shallow with message'
|
|
115
|
-
);
|
|
116
|
-
expect(stripAnsi(mockCalls[4][0] + mockCalls[4][1])).toMatchSnapshot(
|
|
117
|
-
'another custom message'
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
const mockWarnCalls = (console.warn as any as ConsoleLogMock).mock.calls;
|
|
121
|
-
expect(mockWarnCalls[0]).toEqual([
|
|
122
|
-
'Using debug("message") is deprecated and will be removed in future release, please use debug({ message; "message" }) instead.',
|
|
123
|
-
]);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
test('debug changing component', () => {
|
|
127
|
-
const { UNSAFE_getByProps, debug } = render(<Banana />);
|
|
128
|
-
fireEvent.press(UNSAFE_getByProps({ type: 'primary' }));
|
|
129
|
-
|
|
130
|
-
debug();
|
|
131
|
-
|
|
132
|
-
const mockCalls = (console.log as any as ConsoleLogMock).mock.calls;
|
|
133
|
-
expect(stripAnsi(mockCalls[0][0])).toMatchSnapshot(
|
|
134
|
-
'bananaFresh button message should now be "fresh"'
|
|
135
|
-
);
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
test('debug with only children prop', () => {
|
|
139
|
-
const { debug } = render(<Banana />);
|
|
140
|
-
debug({ mapProps: () => ({}) });
|
|
141
|
-
|
|
142
|
-
const mockCalls = (console.log as any as ConsoleLogMock).mock.calls;
|
|
143
|
-
expect(stripAnsi(mockCalls[0][0])).toMatchSnapshot();
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
test('debug with only prop whose value is bananaChef', () => {
|
|
147
|
-
const { debug } = render(<Banana />);
|
|
148
|
-
debug({
|
|
149
|
-
mapProps: (props) => {
|
|
150
|
-
const filterProps: Record<string, unknown> = {};
|
|
151
|
-
Object.keys(props).forEach((key) => {
|
|
152
|
-
if (props[key] === 'bananaChef') {
|
|
153
|
-
filterProps[key] = props[key];
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
return filterProps;
|
|
157
|
-
},
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
const mockCalls = (console.log as any as ConsoleLogMock).mock.calls;
|
|
161
|
-
expect(stripAnsi(mockCalls[0][0])).toMatchSnapshot();
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
test('debug with only props from TextInput components', () => {
|
|
165
|
-
const { debug } = render(<Banana />);
|
|
166
|
-
debug({
|
|
167
|
-
mapProps: (props, node) => (node.type === 'TextInput' ? props : {}),
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
const mockCalls = (console.log as any as ConsoleLogMock).mock.calls;
|
|
171
|
-
expect(stripAnsi(mockCalls[0][0])).toMatchSnapshot();
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
test('debug should use debugOptions from config when no option is specified', () => {
|
|
175
|
-
configure({ defaultDebugOptions: { mapProps: () => ({}) } });
|
|
176
|
-
|
|
177
|
-
const { debug } = render(
|
|
178
|
-
<View style={{ backgroundColor: 'red' }}>
|
|
179
|
-
<Text>hello</Text>
|
|
180
|
-
</View>
|
|
181
|
-
);
|
|
182
|
-
debug();
|
|
183
|
-
|
|
184
|
-
const mockCalls = (console.log as any as ConsoleLogMock).mock.calls;
|
|
185
|
-
expect(stripAnsi(mockCalls[0][0])).toMatchSnapshot();
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
test('filtering out props through mapProps option should not modify component', () => {
|
|
189
|
-
const { debug, getByTestId } = render(<View testID="viewTestID" />);
|
|
190
|
-
debug({ mapProps: () => ({}) });
|
|
191
|
-
|
|
192
|
-
expect(getByTestId('viewTestID')).toBeTruthy();
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
test('debug should use given options over config debugOptions', () => {
|
|
196
|
-
configure({ defaultDebugOptions: { mapProps: () => ({}) } });
|
|
197
|
-
|
|
198
|
-
const { debug } = render(
|
|
199
|
-
<View style={{ backgroundColor: 'red' }}>
|
|
200
|
-
<Text>hello</Text>
|
|
201
|
-
</View>
|
|
202
|
-
);
|
|
203
|
-
debug({ mapProps: (props) => props });
|
|
204
|
-
|
|
205
|
-
const mockCalls = (console.log as any as ConsoleLogMock).mock.calls;
|
|
206
|
-
expect(stripAnsi(mockCalls[0][0])).toMatchSnapshot();
|
|
207
|
-
});
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { View, Text, Pressable } from 'react-native';
|
|
3
|
-
import { render, fireEvent } from '..';
|
|
4
|
-
|
|
5
|
-
// eslint-disable-next-line no-console
|
|
6
|
-
const originalConsoleError = console.error;
|
|
7
|
-
|
|
8
|
-
const VALIDATION_ERROR =
|
|
9
|
-
'Invariant Violation: Text strings must be rendered within a <Text> component';
|
|
10
|
-
const PROFILER_ERROR = 'The above error occurred in the <Profiler> component';
|
|
11
|
-
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
// eslint-disable-next-line no-console
|
|
14
|
-
console.error = (errorMessage: string) => {
|
|
15
|
-
if (!errorMessage.includes(PROFILER_ERROR)) {
|
|
16
|
-
originalConsoleError(errorMessage);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
afterEach(() => {
|
|
22
|
-
// eslint-disable-next-line no-console
|
|
23
|
-
console.error = originalConsoleError;
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
test('should throw when rendering a string outside a text component', () => {
|
|
27
|
-
expect(() =>
|
|
28
|
-
render(<View>hello</View>, {
|
|
29
|
-
unstable_validateStringsRenderedWithinText: true,
|
|
30
|
-
})
|
|
31
|
-
).toThrow(
|
|
32
|
-
`${VALIDATION_ERROR}. Detected attempt to render "hello" string within a <View> component.`
|
|
33
|
-
);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test('should throw an error when rerendering with text outside of Text component', () => {
|
|
37
|
-
const { rerender } = render(<View />, {
|
|
38
|
-
unstable_validateStringsRenderedWithinText: true,
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
expect(() => rerender(<View>hello</View>)).toThrow(
|
|
42
|
-
`${VALIDATION_ERROR}. Detected attempt to render "hello" string within a <View> component.`
|
|
43
|
-
);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
const InvalidTextAfterPress = () => {
|
|
47
|
-
const [showText, setShowText] = React.useState(false);
|
|
48
|
-
|
|
49
|
-
if (!showText) {
|
|
50
|
-
return (
|
|
51
|
-
<Pressable onPress={() => setShowText(true)}>
|
|
52
|
-
<Text>Show text</Text>
|
|
53
|
-
</Pressable>
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return <View>text rendered outside text component</View>;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
test('should throw an error when strings are rendered outside Text', () => {
|
|
61
|
-
const { getByText } = render(<InvalidTextAfterPress />, {
|
|
62
|
-
unstable_validateStringsRenderedWithinText: true,
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
expect(() => fireEvent.press(getByText('Show text'))).toThrow(
|
|
66
|
-
`${VALIDATION_ERROR}. Detected attempt to render "text rendered outside text component" string within a <View> component.`
|
|
67
|
-
);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
test('should not throw for texts nested in fragments', () => {
|
|
71
|
-
expect(() =>
|
|
72
|
-
render(
|
|
73
|
-
<Text>
|
|
74
|
-
<>hello</>
|
|
75
|
-
</Text>,
|
|
76
|
-
{ unstable_validateStringsRenderedWithinText: true }
|
|
77
|
-
)
|
|
78
|
-
).not.toThrow();
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
test('should not throw if option validateRenderedString is false', () => {
|
|
82
|
-
expect(() => render(<View>hello</View>)).not.toThrow();
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
test(`should throw when one of the children is a text and the parent is not a Text component`, () => {
|
|
86
|
-
expect(() =>
|
|
87
|
-
render(
|
|
88
|
-
<View>
|
|
89
|
-
<Text>hello</Text>
|
|
90
|
-
hello
|
|
91
|
-
</View>,
|
|
92
|
-
{ unstable_validateStringsRenderedWithinText: true }
|
|
93
|
-
)
|
|
94
|
-
).toThrow(
|
|
95
|
-
`${VALIDATION_ERROR}. Detected attempt to render "hello" string within a <View> component.`
|
|
96
|
-
);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
test(`should throw when a string is rendered within a fragment rendered outside a Text`, () => {
|
|
100
|
-
expect(() =>
|
|
101
|
-
render(
|
|
102
|
-
<View>
|
|
103
|
-
<>hello</>
|
|
104
|
-
</View>,
|
|
105
|
-
{ unstable_validateStringsRenderedWithinText: true }
|
|
106
|
-
)
|
|
107
|
-
).toThrow(
|
|
108
|
-
`${VALIDATION_ERROR}. Detected attempt to render "hello" string within a <View> component.`
|
|
109
|
-
);
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
test('should throw if a number is rendered outside a text', () => {
|
|
113
|
-
expect(() =>
|
|
114
|
-
render(<View>0</View>, { unstable_validateStringsRenderedWithinText: true })
|
|
115
|
-
).toThrow(
|
|
116
|
-
`${VALIDATION_ERROR}. Detected attempt to render "0" string within a <View> component.`
|
|
117
|
-
);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
const Trans = ({ i18nKey }: { i18nKey: string }) => <>{i18nKey}</>;
|
|
121
|
-
|
|
122
|
-
test('should throw with components returning string value not rendered in Text', () => {
|
|
123
|
-
expect(() =>
|
|
124
|
-
render(
|
|
125
|
-
<View>
|
|
126
|
-
<Trans i18nKey="hello" />
|
|
127
|
-
</View>,
|
|
128
|
-
{ unstable_validateStringsRenderedWithinText: true }
|
|
129
|
-
)
|
|
130
|
-
).toThrow(
|
|
131
|
-
`${VALIDATION_ERROR}. Detected attempt to render "hello" string within a <View> component.`
|
|
132
|
-
);
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
test('should not throw with components returning string value rendered in Text', () => {
|
|
136
|
-
expect(() =>
|
|
137
|
-
render(
|
|
138
|
-
<Text>
|
|
139
|
-
<Trans i18nKey="hello" />
|
|
140
|
-
</Text>,
|
|
141
|
-
{ unstable_validateStringsRenderedWithinText: true }
|
|
142
|
-
)
|
|
143
|
-
).not.toThrow();
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
test('should throw when rendering string in a View in a Text', () => {
|
|
147
|
-
expect(() =>
|
|
148
|
-
render(
|
|
149
|
-
<Text>
|
|
150
|
-
<View>hello</View>
|
|
151
|
-
</Text>,
|
|
152
|
-
{ unstable_validateStringsRenderedWithinText: true }
|
|
153
|
-
)
|
|
154
|
-
).toThrow(
|
|
155
|
-
`${VALIDATION_ERROR}. Detected attempt to render "hello" string within a <View> component.`
|
|
156
|
-
);
|
|
157
|
-
});
|