Skip to content

Instantly share code, notes, and snippets.

@mgdiez
Last active November 15, 2017 10:32
Show Gist options
  • Save mgdiez/52f399eeb0c4abebb7ae4afdce5f53e9 to your computer and use it in GitHub Desktop.
Save mgdiez/52f399eeb0c4abebb7ae4afdce5f53e9 to your computer and use it in GitHub Desktop.
NetworkConnectivityShould.java
public class NetworkConnectivityShould {
@Rule public ImmediateSchedulersTestRule rule = new ImmediateSchedulersTestRule();
@Mock private ConnectivityManager mockConnectivityManager;
@Mock private Context mockContext;
private NetworkConnectivity networkConnectivity;
@Before public void setUp() {
MockitoAnnotations.initMocks(this);
networkConnectivity = new NetworkConnectivity();
when(mockContext.getSystemService(NetworkConnectivity.SYSTEM_SERVICE)).thenReturn(
mockConnectivityManager);
}
@Test public void register_to_connectivity_network_changes() {
networkConnectivity.addConnectivityCallback(mockContext,
spy(NetworkConnectivity.ConnectivityCallback.class));
verify(mockConnectivityManager).registerNetworkCallback(any(NetworkRequest.class),
any(ConnectivityManager.NetworkCallback.class));
}
@Test public void unregister_to_connectivity_network_callback_on_complete() {
NetworkConnectivity.ConnectivityCallback spyConnectivityCallback =
spy(NetworkConnectivity.ConnectivityCallback.class);
Network fakeNetwork = mock(Network.class);
doAnswer(invocation -> {
((ConnectivityManager.NetworkCallback) invocation.getArguments()[1]).onAvailable(fakeNetwork);
return null;
}).when(mockConnectivityManager)
.registerNetworkCallback(any(NetworkRequest.class),
any(ConnectivityManager.NetworkCallback.class));
networkConnectivity.addConnectivityCallback(mockContext, spyConnectivityCallback);
verify(mockConnectivityManager).unregisterNetworkCallback(
any(ConnectivityManager.NetworkCallback.class));
}
@Test public void unregister_to_connectivity_network_on_methodcall() {
NetworkConnectivity.ConnectivityCallback spyConnectivityCallback =
spy(NetworkConnectivity.ConnectivityCallback.class);
doAnswer(invocation -> {
return null;
}).when(mockConnectivityManager)
.registerNetworkCallback(any(NetworkRequest.class),
any(ConnectivityManager.NetworkCallback.class));
networkConnectivity.addConnectivityCallback(mockContext, spyConnectivityCallback);
networkConnectivity.removeConnectivityCallback();
verify(mockConnectivityManager).unregisterNetworkCallback(
any(ConnectivityManager.NetworkCallback.class));
}
@Test public void call_callback_on_network_connection() {
NetworkConnectivity.ConnectivityCallback spyConnectivityCallback =
spy(NetworkConnectivity.ConnectivityCallback.class);
Network fakeNetwork = mock(Network.class);
doAnswer(invocation -> {
((ConnectivityManager.NetworkCallback) invocation.getArguments()[1]).onAvailable(fakeNetwork);
return null;
}).when(mockConnectivityManager)
.registerNetworkCallback(any(NetworkRequest.class),
any(ConnectivityManager.NetworkCallback.class));
networkConnectivity.addConnectivityCallback(mockContext, spyConnectivityCallback);
verify(spyConnectivityCallback).onConnected();
}
@Test public void unregister_callback_on_error() {
NetworkConnectivity.ConnectivityCallback spyConnectivityCallback =
spy(NetworkConnectivity.ConnectivityCallback.class);
networkConnectivity.addConnectivityCallback(mockContext, spyConnectivityCallback);
spyConnectivityCallback.onError(any(Exception.class));
verify(mockConnectivityManager).unregisterNetworkCallback(
any(ConnectivityManager.NetworkCallback.class));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment