Migrate Jest setup scripts from Haste to path-based requires (#24753)

Summary:
This is another step in moving RN towards standard path-based requires. All the requires in Jest's setup script have been rewritten to use relative requires. This commit uses relative requires instead of `react-native/...` so that if Facebook were to stop syncing out certain folders and therefore remove code from the react-native package, internal code at Facebook would not need to change.

[General] [Changed] - Migrate Jest setup scripts from Haste to path-based requires
Pull Request resolved: https://github.com/facebook/react-native/pull/24753

Differential Revision: D15258238

Pulled By: cpojer

fbshipit-source-id: aa05dc8ea2e4ba195226e8ec7ba6482b7de03240
This commit is contained in:
James Ide 2019-05-08 06:56:35 -07:00 коммит произвёл Facebook Github Bot
Родитель 09f17a4e29
Коммит 59749f527a
2 изменённых файлов: 53 добавлений и 19 удалений

Просмотреть файл

@ -11,7 +11,7 @@
'use strict'; 'use strict';
const React = require('React'); const React = require('react');
const TestRenderer = require('react-test-renderer'); const TestRenderer = require('react-test-renderer');
const ShallowRenderer = require('react-test-renderer/shallow'); const ShallowRenderer = require('react-test-renderer/shallow');

Просмотреть файл

@ -27,23 +27,50 @@ global.cancelAnimationFrame = function(id) {
clearTimeout(id); clearTimeout(id);
}; };
jest.mock('setupDevtools'); jest.mock('../Libraries/Core/Devtools/setupDevtools');
// there's a __mock__ for it. // there's a __mock__ for it.
jest.setMock('ErrorUtils', require('ErrorUtils')); jest.setMock(
'../Libraries/vendor/core/ErrorUtils',
require('../Libraries/vendor/core/ErrorUtils'),
);
jest jest
.mock('InitializeCore', () => {}) .mock('../Libraries/Core/InitializeCore', () => {})
.mock('Image', () => mockComponent('Image')) .mock('../Libraries/Image/Image', () =>
.mock('Text', () => mockComponent('Text', MockNativeMethods)) mockComponent('../Libraries/Image/Image'),
.mock('TextInput', () => mockComponent('TextInput')) )
.mock('Modal', () => mockComponent('Modal')) .mock('../Libraries/Text/Text', () =>
.mock('View', () => mockComponent('View', MockNativeMethods)) mockComponent('../Libraries/Text/Text', MockNativeMethods),
.mock('RefreshControl', () => jest.requireMock('RefreshControlMock')) )
.mock('ScrollView', () => jest.requireMock('ScrollViewMock')) .mock('../Libraries/Components/TextInput/TextInput', () =>
.mock('ActivityIndicator', () => mockComponent('ActivityIndicator')) mockComponent('../Libraries/Components/TextInput/TextInput'),
.mock('AnimatedImplementation', () => { )
const AnimatedImplementation = jest.requireActual('AnimatedImplementation'); .mock('../Libraries/Modal/Modal', () =>
mockComponent('../Libraries/Modal/Modal'),
)
.mock('../Libraries/Components/View/View', () =>
mockComponent('../Libraries/Components/View/View', MockNativeMethods),
)
.mock('../Libraries/Components/RefreshControl/RefreshControl', () =>
jest.requireActual(
'../Libraries/Components/RefreshControl/__mocks__/RefreshControlMock',
),
)
.mock('../Libraries/Components/ScrollView/ScrollView', () =>
jest.requireActual(
'../Libraries/Components/ScrollView/__mocks__/ScrollViewMock',
),
)
.mock('../Libraries/Components/ActivityIndicator/ActivityIndicator', () =>
mockComponent(
'../Libraries/Components/ActivityIndicator/ActivityIndicator',
),
)
.mock('../Libraries/Animated/src/AnimatedImplementation', () => {
const AnimatedImplementation = jest.requireActual(
'../Libraries/Animated/src/AnimatedImplementation',
);
const oldCreate = AnimatedImplementation.createAnimatedComponent; const oldCreate = AnimatedImplementation.createAnimatedComponent;
AnimatedImplementation.createAnimatedComponent = function( AnimatedImplementation.createAnimatedComponent = function(
Component, Component,
@ -55,8 +82,10 @@ jest
}; };
return AnimatedImplementation; return AnimatedImplementation;
}) })
.mock('ReactNative', () => { .mock('../Libraries/Renderer/shims/ReactNative', () => {
const ReactNative = jest.requireActual('ReactNative'); const ReactNative = jest.requireActual(
'../Libraries/Renderer/shims/ReactNative',
);
const NativeMethodsMixin = const NativeMethodsMixin =
ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
.NativeMethodsMixin; .NativeMethodsMixin;
@ -66,7 +95,9 @@ jest
return ReactNative; return ReactNative;
}) })
.mock('ensureComponentIsNative', () => () => true); .mock('../Libraries/Components/Touchable/ensureComponentIsNative', () => () =>
true,
);
const mockNativeModules = { const mockNativeModules = {
AccessibilityInfo: { AccessibilityInfo: {
@ -314,9 +345,12 @@ Object.keys(mockNativeModules).forEach(module => {
} }
}); });
jest.doMock('NativeModules', () => mockNativeModules); jest.doMock(
'../Libraries/BatchedBridge/NativeModules',
() => mockNativeModules,
);
jest.doMock('requireNativeComponent', () => { jest.doMock('../Libraries/ReactNative/requireNativeComponent', () => {
const React = require('react'); const React = require('react');
return viewName => return viewName =>