@samitouri / QOS-React-2 / commits / 4f4aa69f1b

Adding setNativeProps tests for NativeMethodsMixin (#14901)

Eli White committed Feb 20, 2019 at 13:16 UTC 4f4aa69f1b2bdc1ddb00e476f49450e251475e0c
3 files changed +40 -4
packages/react-native-renderer/src/NativeMethodsMixin.js
+4 -2
@@ -142,8 +142,10 @@ export default function(
142 return;
143 }
144
145 + const nativeTag =
146 + maybeInstance._nativeTag || maybeInstance.canonical._nativeTag;
147 const viewConfig: ReactNativeBaseComponentViewConfig<> =
146 - maybeInstance.viewConfig;
148 + maybeInstance.viewConfig || maybeInstance.canonical.viewConfig;
149
150 if (__DEV__) {
151 warnForStyleProps(nativeProps, viewConfig.validAttributes);
@@ -156,7 +158,7 @@ export default function(
158 // view invalidation for certain components (eg RCTTextInput) on iOS.
159 if (updatePayload != null) {
160 UIManager.updateView(
159 - maybeInstance._nativeTag,
161 + nativeTag,
162 viewConfig.uiViewClassName,
163 updatePayload,
164 );
packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js
+18 -1
@@ -12,10 +12,12 @@
12
13 let React;
14 let ReactFabric;
15 +let createReactClass;
16 let createReactNativeComponentClass;
17 let UIManager;
18 let FabricUIManager;
19 let StrictMode;
20 +let NativeMethodsMixin;
21
22 jest.mock('shared/ReactFeatureFlags', () =>
23 require('shared/forks/ReactFeatureFlags.native-oss'),
@@ -30,8 +32,16 @@ describe('ReactFabric', () => {
32 ReactFabric = require('react-native-renderer/fabric');
33 FabricUIManager = require('FabricUIManager');
34 UIManager = require('UIManager');
35 + createReactClass = require('create-react-class/factory')(
36 + React.Component,
37 + React.isValidElement,
38 + new React.Component().updater,
39 + );
40 createReactNativeComponentClass = require('ReactNativeViewConfigRegistry')
41 .register;
42 + NativeMethodsMixin =
43 + ReactFabric.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
44 + .NativeMethodsMixin;
45 });
46
47 it('should be able to create and render a native component', () => {
@@ -169,7 +179,14 @@ describe('ReactFabric', () => {
179 }
180 }
181
172 - [View, Subclass].forEach(Component => {
182 + const CreateClass = createReactClass({
183 + mixins: [NativeMethodsMixin],
184 + render: () => {
185 + return <View />;
186 + },
187 + });
188 +
189 + [View, Subclass, CreateClass].forEach(Component => {
190 UIManager.updateView.mockReset();
191
192 let viewRef;
packages/react-native-renderer/src/__tests__/ReactNativeMount-test.internal.js
+18 -1
@@ -13,8 +13,10 @@
13 let React;
14 let StrictMode;
15 let ReactNative;
16 +let createReactClass;
17 let createReactNativeComponentClass;
18 let UIManager;
19 +let NativeMethodsMixin;
20
21 describe('ReactNative', () => {
22 beforeEach(() => {
@@ -24,8 +26,16 @@ describe('ReactNative', () => {
26 StrictMode = React.StrictMode;
27 ReactNative = require('react-native-renderer');
28 UIManager = require('UIManager');
29 + createReactClass = require('create-react-class/factory')(
30 + React.Component,
31 + React.isValidElement,
32 + new React.Component().updater,
33 + );
34 createReactNativeComponentClass = require('ReactNativeViewConfigRegistry')
35 .register;
36 + NativeMethodsMixin =
37 + ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
38 + .NativeMethodsMixin;
39 });
40
41 it('should be able to create and render a native component', () => {
@@ -100,7 +110,14 @@ describe('ReactNative', () => {
110 }
111 }
112
103 - [View, Subclass].forEach(Component => {
113 + const CreateClass = createReactClass({
114 + mixins: [NativeMethodsMixin],
115 + render: () => {
116 + return <View />;
117 + },
118 + });
119 +
120 + [View, Subclass, CreateClass].forEach(Component => {
121 UIManager.updateView.mockReset();
122
123 let viewRef;