static NetworkInfo mockNetworkInfo() { return mockNetworkInfo(false); }
@Test public void nullExtrasOnReceiveConnectivityAreOk() { ConnectivityManager connectivityManager = mock(ConnectivityManager.class); NetworkInfo networkInfo = mockNetworkInfo(); when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); when(context.getSystemService(CONNECTIVITY_SERVICE)).thenReturn(connectivityManager); Dispatcher dispatcher = mock(Dispatcher.class); NetworkBroadcastReceiver receiver = new NetworkBroadcastReceiver(dispatcher); receiver.onReceive(context, new Intent(CONNECTIVITY_ACTION)); verify(dispatcher).dispatchNetworkStateChange(networkInfo); }
@Test public void shouldRetryWithConnectedNetworkInfo() { NetworkInfo info = mockNetworkInfo(); when(info.isConnected()).thenReturn(true); assertThat(networkHandler.shouldRetry(false, info)).isTrue(); assertThat(networkHandler.shouldRetry(true, info)).isTrue(); }
@Test public void performNetworkStateChangeWithDisconnectedInfoIgnores() { Dispatcher dispatcher = createDispatcher(serviceMock); NetworkInfo info = mockNetworkInfo(); when(info.isConnectedOrConnecting()).thenReturn(false); dispatcher.performNetworkStateChange(info); verifyZeroInteractions(service); }
@Test public void performNetworkStateChangeFlushesFailedHunters() { PicassoExecutorService service = mock(PicassoExecutorService.class); NetworkInfo info = mockNetworkInfo(true); Dispatcher dispatcher = createDispatcher(service); Action failedAction1 = mockAction(URI_KEY_1, URI_1); Action failedAction2 = mockAction(URI_KEY_2, URI_2); dispatcher.failedActions.put(URI_KEY_1, failedAction1); dispatcher.failedActions.put(URI_KEY_2, failedAction2); dispatcher.performNetworkStateChange(info); verify(service, times(2)).submit(any(BitmapHunter.class)); assertThat(dispatcher.failedActions).isEmpty(); }
@Test public void performRetryDoesNotMarkForReplayIfNotSupported() { NetworkInfo networkInfo = mockNetworkInfo(true); BitmapHunter hunter = mockHunter(URI_KEY_1, new RequestHandler.Result(bitmap1, MEMORY), mockAction(URI_KEY_1, URI_1)); when(hunter.supportsReplay()).thenReturn(false); when(hunter.shouldRetry(anyBoolean(), any(NetworkInfo.class))).thenReturn(false); when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); dispatcher.performRetry(hunter); assertThat(dispatcher.hunterMap).isEmpty(); assertThat(dispatcher.failedActions).isEmpty(); verify(service, never()).submit(hunter); }
@Test public void performNetworkStateChangeWithConnectedInfoDifferentInstanceIgnores() { Dispatcher dispatcher = createDispatcher(serviceMock); NetworkInfo info = mockNetworkInfo(true); dispatcher.performNetworkStateChange(info); verifyZeroInteractions(service); }
@Test public void performRetryMarksForReplayIfSupportedScansNetworkChangesAndShouldNotRetry() { NetworkInfo networkInfo = mockNetworkInfo(true); Action action = mockAction(URI_KEY_1, URI_1, mockTarget()); BitmapHunter hunter = mockHunter(URI_KEY_1, new RequestHandler.Result(bitmap1, MEMORY), action); when(hunter.supportsReplay()).thenReturn(true); when(hunter.shouldRetry(anyBoolean(), any(NetworkInfo.class))).thenReturn(false); when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); dispatcher.performRetry(hunter); assertThat(dispatcher.hunterMap).isEmpty(); assertThat(dispatcher.failedActions).hasSize(1); verify(service, never()).submit(hunter); }
@Test public void shouldNotRetryWithDisconnectedNetworkInfo() { NetworkInfo info = mockNetworkInfo(); when(info.isConnectedOrConnecting()).thenReturn(false); assertThat(networkHandler.shouldRetry(false, info)).isFalse(); assertThat(networkHandler.shouldRetry(true, info)).isFalse(); }
@Test public void performRetryForContentLengthResetsNetworkPolicy() { NetworkInfo networkInfo = mockNetworkInfo(true); when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); BitmapHunter hunter = new BitmapHunter(mockPicasso(), dispatcher, cache, stats, mockAction(URI_KEY_2, URI_2), RETRYING_REQUEST_HANDLER); hunter.exception = new ContentLengthException("304 error"); dispatcher.performRetry(hunter); assertThat(NetworkPolicy.shouldReadFromDiskCache(hunter.data.networkPolicy)).isFalse(); }