Add tests for codegenNativeComponent
Summary: Adds tests for codegenNativeComponent Reviewed By: TheSavior Differential Revision: D16582627 fbshipit-source-id: 3527126c7838f3e2c0c56b19956c618f0a7fb9f9
This commit is contained in:
Родитель
cf819bf048
Коммит
2e8ecab583
|
@ -0,0 +1,67 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
* @emails oncall+react_native
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const codegenNativeComponent = require('../codegenNativeComponent').default;
|
||||
const {UIManager} = require('react-native');
|
||||
|
||||
// We need to unmock requireNativeComponent since it's under test.
|
||||
// Instead, we mock the function it calls, createReactNativeComponentClass,
|
||||
// so that we don't run into issues populating the registry with the same
|
||||
// component names.
|
||||
jest.unmock('../../ReactNative/requireNativeComponent');
|
||||
jest.mock(
|
||||
'../../Renderer/shims/createReactNativeComponentClass',
|
||||
() => componentName => componentName,
|
||||
);
|
||||
jest
|
||||
.spyOn(UIManager, 'getViewManagerConfig')
|
||||
.mockImplementation(componentName =>
|
||||
componentName.includes('ComponentNameDoesNotExist') ? false : true,
|
||||
);
|
||||
|
||||
describe('codegenNativeComponent', () => {
|
||||
it('should require component as is ', () => {
|
||||
const component = codegenNativeComponent('ComponentName');
|
||||
expect(component).toBe('ComponentName');
|
||||
});
|
||||
|
||||
it('should require paperComponentName', () => {
|
||||
const component = codegenNativeComponent('ComponentName', {
|
||||
paperComponentName: 'PaperComponentName',
|
||||
});
|
||||
expect(component).toBe('PaperComponentName');
|
||||
});
|
||||
|
||||
it('should fall back to requiring the deprecated paper component name', () => {
|
||||
const component = codegenNativeComponent('ComponentNameDoesNotExist', {
|
||||
paperComponentNameDeprecated: 'ComponentName',
|
||||
});
|
||||
expect(component).toBe('ComponentName');
|
||||
});
|
||||
|
||||
it('should require the new component name', () => {
|
||||
const component = codegenNativeComponent('ComponentName', {
|
||||
paperComponentNameDeprecated: 'ComponentNameDoesNotExist',
|
||||
});
|
||||
expect(component).toBe('ComponentName');
|
||||
});
|
||||
|
||||
it('should throw if neither component names exist', () => {
|
||||
expect(() =>
|
||||
codegenNativeComponent('ComponentNameDoesNotExistOne', {
|
||||
paperComponentNameDeprecated: 'ComponentNameDoesNotExistTwo',
|
||||
}),
|
||||
).toThrow(
|
||||
'Failed to find native component for either ComponentNameDoesNotExistOne or ComponentNameDoesNotExistTwo',
|
||||
);
|
||||
});
|
||||
});
|
Загрузка…
Ссылка в новой задаче