Fix setMeasureFunction during cloning

Reviewed By: achen1

Differential Revision: D7753602

fbshipit-source-id: 284ec13b4cd784dfc61eeb0205f5779847854aac
This commit is contained in:
David Vacca
2018-04-25 09:43:27 -07:00
committed by Facebook Github Bot
parent c6b96c0df7
commit 409dbd2057
6 changed files with 71 additions and 24 deletions

View File

@@ -34,6 +34,7 @@ rn_robolectric_test(
react_native_target("java/com/facebook/react/uimanager:uimanager"),
react_native_target("java/com/facebook/react/views/text:text"),
react_native_target("java/com/facebook/react/views/view:view"),
react_native_target("java/com/facebook/react/views/progressbar:progressbar"),
react_native_tests_target("java/com/facebook/react/bridge:testhelpers"),
],
)

View File

@@ -2,41 +2,29 @@
package com.facebook.react.fabric;
import static org.fest.assertions.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.facebook.react.ReactRootView;
import com.facebook.react.bridge.CatalystInstance;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactTestHelper;
import com.facebook.react.bridge.ReadableNativeMap;
import com.facebook.react.common.ClearableSynchronizedPool;
import com.facebook.react.fabric.FabricUIManager;
import com.facebook.react.uimanager.ReactShadowNode;
import com.facebook.react.uimanager.ReactShadowNodeImpl;
import com.facebook.react.uimanager.Spacing;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.ViewManager;
import com.facebook.react.uimanager.ViewManagerRegistry;
import com.facebook.react.views.progressbar.ProgressBarShadowNode;
import com.facebook.react.views.text.ReactRawTextManager;
import com.facebook.react.views.text.ReactRawTextShadowNode;
import com.facebook.react.views.text.ReactTextViewManager;
import com.facebook.react.views.view.ReactViewManager;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.fest.assertions.data.Offset;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@@ -52,11 +40,10 @@ public class FabricUIManagerTest {
@Before
public void setUp() throws Exception {
mNextReactTag = 2;
mThemedReactContext = mock(ThemedReactContext.class);
CatalystInstance catalystInstance = ReactTestHelper.createMockCatalystInstance();
ReactApplicationContext reactContext =
new ReactApplicationContext(RuntimeEnvironment.application);
reactContext.initializeWithInstance(catalystInstance);
ReactApplicationContext reactContext = new ReactApplicationContext(RuntimeEnvironment.application);
reactContext.initializeWithInstance(ReactTestHelper.createMockCatalystInstance());
mThemedReactContext = new ThemedReactContext(reactContext, reactContext);
List<ViewManager> viewManagers =
Arrays.<ViewManager>asList(
new ReactViewManager(), new ReactTextViewManager(), new ReactRawTextManager());
@@ -143,6 +130,14 @@ public class FabricUIManagerTest {
assertThat(clonedNode).isNotEqualTo(node);
}
@Test
public void testLayoutProgressBarAfterClonning() {
ProgressBarShadowNode node = new ProgressBarShadowNode();
node.setThemedContext(mThemedReactContext);
ProgressBarShadowNode clone = (ProgressBarShadowNode) node.mutableCopy();
clone.calculateLayout();
}
@Test
public void testCloneNodeWithNewChildren() {
ReactShadowNode node = createViewNode();