package com.mopub.nativeads;
import android.app.Activity;
import com.mopub.common.DataKeys;
import com.mopub.common.test.support.SdkTestRunner;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.HashMap;
import static com.mopub.nativeads.CustomEventNative.CustomEventNativeListener;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
@RunWith(SdkTestRunner.class)
public class MoPubCustomEventNativeTest {
private MoPubCustomEventNative subject;
private Activity context;
private HashMap<String, Object> localExtras;
private CustomEventNativeListener mCustomEventNativeListener;
private HashMap<String, String> serverExtras;
private JSONObject fakeJsonObject;
@Before
public void setUp() throws Exception {
subject = new MoPubCustomEventNative();
context = new Activity();
localExtras = new HashMap<String, Object>();
serverExtras = new HashMap<String, String>();
fakeJsonObject = new JSONObject();
fakeJsonObject.put("imptracker", new JSONArray("[\"url1\", \"url2\"]"));
fakeJsonObject.put("clktracker", "expected clicktracker");
fakeJsonObject.put("mainimage", "mainimageurl");
fakeJsonObject.put("iconimage", "iconimageurl");
fakeJsonObject.put("extraimage", "extraimageurl");
localExtras.put(DataKeys.JSON_BODY_KEY, fakeJsonObject);
mCustomEventNativeListener = mock(CustomEventNativeListener.class);
}
@After
public void tearDown() throws Exception {
reset(mCustomEventNativeListener);
}
@Test
public void loadNativeAd_withNullResponseBody_shouldNotifyListenerOfOnNativeAdFailed() throws Exception {
localExtras.remove(DataKeys.JSON_BODY_KEY);
subject.loadNativeAd(context, mCustomEventNativeListener, localExtras, serverExtras);
verify(mCustomEventNativeListener, never()).onNativeAdLoaded(any(MoPubCustomEventNative.MoPubForwardingNativeAd.class));
verify(mCustomEventNativeListener).onNativeAdFailed(NativeErrorCode.INVALID_JSON);
}
}