mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Moving more unit tests to open source
Reviewed By: foghina, mkonicek Differential Revision: D2865561 fb-gh-sync-id: 7aab67d205b94d657a6ec7bf81a4ecee644eabc2
This commit is contained in:
committed by
facebook-github-bot-2
parent
fff5dc3943
commit
83fd314e37
+143
@@ -0,0 +1,143 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
package com.facebook.react.uimanager;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.uimanager.annotations.ReactPropGroup;
|
||||
|
||||
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
||||
import org.powermock.modules.junit4.rule.PowerMockRule;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
/**
|
||||
* Test that verifies that spec of methods annotated with @ReactProp is correct
|
||||
*/
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*"})
|
||||
public class ReactPropAnnotationSetterSpecTest {
|
||||
|
||||
@Rule
|
||||
public PowerMockRule rule = new PowerMockRule();
|
||||
|
||||
private abstract class BaseViewManager extends ViewManager<View, ReactShadowNode> {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "IgnoredName";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReactShadowNode createShadowNodeInstance() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends ReactShadowNode> getShadowNodeClass() {
|
||||
return ReactShadowNode.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected View createViewInstance(ThemedReactContext reactContext) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateExtraData(View root, Object extraData) {
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testMethodWithWongNumberOfParams() {
|
||||
new BaseViewManager() {
|
||||
@ReactProp(name = "prop")
|
||||
public void setterWithIncorrectNumberOfArgs(View v, boolean value, boolean otherValue) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testMethodWithTooFewParams() {
|
||||
new BaseViewManager() {
|
||||
@ReactProp(name = "prop")
|
||||
public void setterWithTooFewParams(View v) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testUnsupportedPropValueType() {
|
||||
new BaseViewManager() {
|
||||
@ReactProp(name = "prop")
|
||||
public void setterWithUnsupportedValueType(View v, Date value) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testSetterWIthNonViewParam() {
|
||||
new BaseViewManager() {
|
||||
@ReactProp(name = "prop")
|
||||
public void setterWithNonViewParam(Object v, boolean value) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testGroupInvalidNumberOfParams() {
|
||||
new BaseViewManager() {
|
||||
@ReactPropGroup(names = {"prop1", "prop2"})
|
||||
public void setterWIthInvalidNumberOfParams(View v, int index, float value, float other) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testGroupTooFewParams() {
|
||||
new BaseViewManager() {
|
||||
@ReactPropGroup(names = {"prop1", "prop2"})
|
||||
public void setterWIthTooFewParams(View v, int index) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testGroupNoIndexParam() {
|
||||
new BaseViewManager() {
|
||||
@ReactPropGroup(names = {"prop1", "prop2"})
|
||||
public void setterWithoutIndexParam(View v, float value, float sth) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testGroupNoViewParam() {
|
||||
new BaseViewManager() {
|
||||
@ReactPropGroup(names = {"prop1", "prop2"})
|
||||
public void setterWithoutViewParam(Object v, int index, float value) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void testGroupUnsupportedPropType() {
|
||||
new BaseViewManager() {
|
||||
@ReactPropGroup(names = {"prop1", "prop2"})
|
||||
public void setterWithUnsupportedPropType(View v, int index, long value) {
|
||||
}
|
||||
}.getNativeProps();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user