mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add unit test for ImageView to take null uri in source
Summary: This is a follow up action item from S295231 and T136039462 where we want to make sure null uri in image source is handled properly. This diff adds an unit test to make sure we are using transparent image when uri is null. Changelog: [Android][Internal] - Add unit test to ImageView for null uri in source Reviewed By: javache Differential Revision: D40732791 fbshipit-source-id: fd468bfe7c33a4f3f8913ead3e84a1770d7c907f
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6b8e13f53c
commit
58a1cd2367
@@ -28,6 +28,8 @@ rn_robolectric_test(
|
||||
react_native_dep("third-party/java/okio:okio"),
|
||||
react_native_target("java/com/facebook/react:react"),
|
||||
react_native_target("java/com/facebook/react/bridge:bridge"),
|
||||
react_native_target("java/com/facebook/react/util:util"),
|
||||
react_native_target("java/com/facebook/react/views/imagehelper:imagehelper"),
|
||||
react_native_target("java/com/facebook/react/common:common"),
|
||||
react_native_target("java/com/facebook/react/touch:touch"),
|
||||
react_native_target("java/com/facebook/react/uimanager:uimanager"),
|
||||
|
||||
@@ -14,22 +14,30 @@ import static org.junit.Assert.assertNull;
|
||||
import android.graphics.Color;
|
||||
import android.util.DisplayMetrics;
|
||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||
import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.CatalystInstance;
|
||||
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||
import com.facebook.react.bridge.JavaOnlyArray;
|
||||
import com.facebook.react.bridge.JavaOnlyMap;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.ReactTestHelper;
|
||||
import com.facebook.react.bridge.WritableArray;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.uimanager.DisplayMetricsHolder;
|
||||
import com.facebook.react.uimanager.ReactStylesDiffMap;
|
||||
import com.facebook.react.uimanager.ThemedReactContext;
|
||||
import com.facebook.react.util.RNLog;
|
||||
import com.facebook.react.views.imagehelper.ImageSource;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.powermock.api.mockito.PowerMockito;
|
||||
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.rule.PowerMockRule;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
@@ -38,6 +46,7 @@ import org.robolectric.RuntimeEnvironment;
|
||||
* Verify that {@link ScalingUtils} properties are being applied correctly by {@link
|
||||
* ReactImageManager}.
|
||||
*/
|
||||
@PrepareForTest({Arguments.class, RNLog.class})
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "androidx.*", "android.*"})
|
||||
public class ReactImagePropertyTest {
|
||||
@@ -50,6 +59,17 @@ public class ReactImagePropertyTest {
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
PowerMockito.mockStatic(Arguments.class);
|
||||
PowerMockito.when(Arguments.createArray())
|
||||
.thenAnswer((InvocationOnMock invocation) -> new JavaOnlyArray());
|
||||
PowerMockito.when(Arguments.createMap())
|
||||
.thenAnswer((InvocationOnMock invocation) -> new JavaOnlyMap());
|
||||
|
||||
// RNLog is stubbed out and the whole class need to be mocked
|
||||
PowerMockito.mockStatic(RNLog.class);
|
||||
PowerMockito.doNothing().when(RNLog.class);
|
||||
RNLog.w(null, "");
|
||||
|
||||
SoLoader.setInTestMode();
|
||||
mContext = new ReactApplicationContext(RuntimeEnvironment.application);
|
||||
mCatalystInstanceMock = ReactTestHelper.createMockCatalystInstance();
|
||||
@@ -140,4 +160,20 @@ public class ReactImagePropertyTest {
|
||||
viewManager.updateProperties(view, buildStyles("tintColor", null));
|
||||
assertNull(view.getColorFilter());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNullSrcs() {
|
||||
ReactImageManager viewManager = new ReactImageManager();
|
||||
ReactImageView view = viewManager.createViewInstance(mThemeContext);
|
||||
WritableArray sources = Arguments.createArray();
|
||||
WritableMap srcObj = Arguments.createMap();
|
||||
srcObj.putNull("uri");
|
||||
srcObj.putNull("width");
|
||||
srcObj.putNull("height");
|
||||
sources.pushMap(srcObj);
|
||||
viewManager.setSource(view, sources);
|
||||
view.maybeUpdateView();
|
||||
assertEquals(
|
||||
ImageSource.getTransparentBitmapImageSource(view.getContext()), view.getImageSource());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user