package com.mopub.mobileads;
import android.app.Activity;
import com.mopub.common.test.support.SdkTestRunner;
import com.mopub.network.Networking;
import com.mopub.network.TrackingRequest;
import com.mopub.volley.RequestQueue;
import com.mopub.volley.VolleyError;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
@RunWith(SdkTestRunner.class)
public class MoPubConversionTrackerTest {
private MoPubConversionTracker subject;
private Activity context;
@Mock
RequestQueue mockRequestQueue;
@Captor
ArgumentCaptor<TrackingRequest> requestCaptor;
private String expectedUdid;
private boolean dnt = false;
private static final String TEST_UDID = "20b013c721c";
@Before
public void setUp() throws Exception {
subject = new MoPubConversionTracker();
context = new Activity();
Networking.setRequestQueueForTesting(mockRequestQueue);
}
@Test
public void reportAppOpen_Twice_shouldCallOnlyOnce() {
subject.reportAppOpen(context);
verify(mockRequestQueue).add(requestCaptor.capture());
reset(mockRequestQueue);
requestCaptor.getValue().deliverResponse(null);
subject.reportAppOpen(context);
verify(mockRequestQueue, never()).add(any(TrackingRequest.class));
}
@Test
public void reportAppOpen_fails_shouldCallAgain() {
subject.reportAppOpen(context);
verify(mockRequestQueue).add(requestCaptor.capture());
reset(mockRequestQueue);
requestCaptor.getValue().deliverError(new VolleyError());
subject.reportAppOpen(context);
verify(mockRequestQueue).add(any(TrackingRequest.class));
}
}