aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorAnonymous <no-reply@google.com>2018-11-19 17:26:01 -0800
committerJeff Davidson <jpd@google.com>2018-11-19 17:27:43 -0800
commite636520a251b37c313731666bcff1f39ecf41b35 (patch)
tree0cd474d52b5aea1378f22c09f6ab4fc6fd94bb2c /src/test
parentd2e032ebc11eb39c4021a7c306119cb7dbaaf56d (diff)
downloadvolley-e636520a251b37c313731666bcff1f39ecf41b35.tar.gz
- 1ec8e6e1e4979a8c907765e41546a4d3c63035fe Allow tracking of the request's life cycle (#238) by Artem <artikz@users.noreply.github.com> GitOrigin-RevId: 1ec8e6e1e4979a8c907765e41546a4d3c63035fe Change-Id: Ib57d2210f4ab8116c204fc321007892bf3e02393
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/android/volley/CacheDispatcherTest.java23
-rw-r--r--src/test/java/com/android/volley/NetworkDispatcherTest.java47
-rw-r--r--src/test/java/com/android/volley/RequestQueueTest.java54
-rw-r--r--src/test/java/com/android/volley/RequestTest.java40
4 files changed, 164 insertions, 0 deletions
diff --git a/src/test/java/com/android/volley/CacheDispatcherTest.java b/src/test/java/com/android/volley/CacheDispatcherTest.java
index 9c5d3c3..2592a0b 100644
--- a/src/test/java/com/android/volley/CacheDispatcherTest.java
+++ b/src/test/java/com/android/volley/CacheDispatcherTest.java
@@ -20,6 +20,8 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -32,6 +34,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
+import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -45,6 +48,7 @@ public class CacheDispatcherTest {
private @Mock BlockingQueue<Request<?>> mNetworkQueue;
private @Mock Cache mCache;
private @Mock ResponseDelivery mDelivery;
+ private @Mock Network mNetwork;
private StringRequest mRequest;
@Before
@@ -231,4 +235,23 @@ public class CacheDispatcherTest {
verify(mDelivery)
.postResponse(any(Request.class), any(Response.class), any(Runnable.class));
}
+
+ @Test
+ public void processRequestNotifiesListener() throws Exception {
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(mCache, mNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+ mRequest.setRequestQueue(queue);
+
+ Cache.Entry entry = CacheTestUtils.makeRandomCacheEntry(null, false, false);
+ when(mCache.get(anyString())).thenReturn(entry);
+ mDispatcher.processRequest(mRequest);
+
+ InOrder inOrder = inOrder(listener);
+ inOrder.verify(listener)
+ .onRequestEvent(mRequest, RequestQueue.RequestEvent.REQUEST_CACHE_LOOKUP_STARTED);
+ inOrder.verify(listener)
+ .onRequestEvent(mRequest, RequestQueue.RequestEvent.REQUEST_CACHE_LOOKUP_FINISHED);
+ inOrder.verifyNoMoreInteractions();
+ }
}
diff --git a/src/test/java/com/android/volley/NetworkDispatcherTest.java b/src/test/java/com/android/volley/NetworkDispatcherTest.java
index 51c6971..74dfe8a 100644
--- a/src/test/java/com/android/volley/NetworkDispatcherTest.java
+++ b/src/test/java/com/android/volley/NetworkDispatcherTest.java
@@ -21,11 +21,14 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
+import com.android.volley.toolbox.NoCache;
import com.android.volley.toolbox.StringRequest;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
@@ -34,6 +37,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
+import org.mockito.InOrder;
import org.mockito.Mock;
import org.robolectric.RobolectricTestRunner;
@@ -71,6 +75,28 @@ public class NetworkDispatcherTest {
}
@Test
+ public void successNotifiesListener() throws Exception {
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(new NoCache(), mNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+ mRequest.setRequestQueue(queue);
+
+ when(mNetwork.performRequest(any(Request.class)))
+ .thenReturn(new NetworkResponse(CANNED_DATA));
+
+ mDispatcher.processRequest(mRequest);
+
+ InOrder inOrder = inOrder(listener);
+ inOrder.verify(listener)
+ .onRequestEvent(
+ mRequest, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_STARTED);
+ inOrder.verify(listener)
+ .onRequestEvent(
+ mRequest, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_FINISHED);
+ inOrder.verifyNoMoreInteractions();
+ }
+
+ @Test
public void exceptionPostsError() throws Exception {
when(mNetwork.performRequest(any(Request.class))).thenThrow(new ServerError());
mDispatcher.processRequest(mRequest);
@@ -80,6 +106,27 @@ public class NetworkDispatcherTest {
}
@Test
+ public void exceptionNotifiesListener() throws Exception {
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(new NoCache(), mNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+ mRequest.setRequestQueue(queue);
+
+ when(mNetwork.performRequest(any(Request.class))).thenThrow(new ServerError());
+
+ mDispatcher.processRequest(mRequest);
+
+ InOrder inOrder = inOrder(listener);
+ inOrder.verify(listener)
+ .onRequestEvent(
+ mRequest, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_STARTED);
+ inOrder.verify(listener)
+ .onRequestEvent(
+ mRequest, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_FINISHED);
+ inOrder.verifyNoMoreInteractions();
+ }
+
+ @Test
public void shouldCacheFalse() throws Exception {
mRequest.setShouldCache(false);
mDispatcher.processRequest(mRequest);
diff --git a/src/test/java/com/android/volley/RequestQueueTest.java b/src/test/java/com/android/volley/RequestQueueTest.java
index 11c6fe2..ba9b0f8 100644
--- a/src/test/java/com/android/volley/RequestQueueTest.java
+++ b/src/test/java/com/android/volley/RequestQueueTest.java
@@ -19,6 +19,7 @@ package com.android.volley;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
@@ -72,4 +73,57 @@ public class RequestQueueTest {
verify(req2, never()).cancel(); // B not cancelled
verify(req4, never()).cancel(); // A added after cancel not cancelled
}
+
+ @Test
+ public void add_notifiesListener() throws Exception {
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(new NoCache(), mMockNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+ StringRequest req = mock(StringRequest.class);
+
+ queue.add(req);
+
+ verify(listener).onRequestEvent(req, RequestQueue.RequestEvent.REQUEST_QUEUED);
+ verifyNoMoreInteractions(listener);
+ }
+
+ @Test
+ public void finish_notifiesListener() throws Exception {
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(new NoCache(), mMockNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+ StringRequest req = mock(StringRequest.class);
+
+ queue.finish(req);
+
+ verify(listener).onRequestEvent(req, RequestQueue.RequestEvent.REQUEST_FINISHED);
+ verifyNoMoreInteractions(listener);
+ }
+
+ @Test
+ public void sendRequestEvent_notifiesListener() throws Exception {
+ StringRequest req = mock(StringRequest.class);
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(new NoCache(), mMockNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+
+ queue.sendRequestEvent(req, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_STARTED);
+
+ verify(listener)
+ .onRequestEvent(req, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_STARTED);
+ verifyNoMoreInteractions(listener);
+ }
+
+ @Test
+ public void removeRequestEventListener_removesListener() throws Exception {
+ StringRequest req = mock(StringRequest.class);
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(new NoCache(), mMockNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+ queue.removeRequestEventListener(listener);
+
+ queue.sendRequestEvent(req, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_STARTED);
+
+ verifyNoMoreInteractions(listener);
+ }
}
diff --git a/src/test/java/com/android/volley/RequestTest.java b/src/test/java/com/android/volley/RequestTest.java
index 382d9da..cced39f 100644
--- a/src/test/java/com/android/volley/RequestTest.java
+++ b/src/test/java/com/android/volley/RequestTest.java
@@ -19,17 +19,31 @@ package com.android.volley;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.MockitoAnnotations.initMocks;
import com.android.volley.Request.Method;
import com.android.volley.Request.Priority;
+import com.android.volley.toolbox.NoCache;
import java.util.Collections;
import java.util.Map;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class RequestTest {
+ private @Mock ResponseDelivery mDelivery;
+ private @Mock Network mNetwork;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+ }
@Test
public void compareTo() {
@@ -189,4 +203,30 @@ public class RequestTest {
// expected
}
}
+
+ @Test
+ public void sendEvent_notifiesListeners() throws Exception {
+ RequestQueue.RequestEventListener listener = mock(RequestQueue.RequestEventListener.class);
+ RequestQueue queue = new RequestQueue(new NoCache(), mNetwork, 0, mDelivery);
+ queue.addRequestEventListener(listener);
+
+ Request<Object> request =
+ new Request<Object>(Method.POST, "url", null) {
+ @Override
+ protected void deliverResponse(Object response) {}
+
+ @Override
+ protected Response<Object> parseNetworkResponse(NetworkResponse response) {
+ return null;
+ }
+ };
+ request.setRequestQueue(queue);
+
+ request.sendEvent(RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_STARTED);
+
+ verify(listener)
+ .onRequestEvent(
+ request, RequestQueue.RequestEvent.REQUEST_NETWORK_DISPATCH_STARTED);
+ verifyNoMoreInteractions(listener);
+ }
}