package com.nilhcem.bblfr.core.utils; import android.content.Context; import android.net.ConnectivityManager; import android.os.Build; import com.nilhcem.bblfr.BuildConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.util.Locale; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.M) public class NetworkUtilsTest { @Mock Context context; @Mock(answer = Answers.RETURNS_DEEP_STUBS) ConnectivityManager manager; @Before public void setup() { MockitoAnnotations.initMocks(this); when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(manager); } @Test public void should_return_true_if_network_is_available() { // Given when(manager.getActiveNetworkInfo().isConnected()).thenReturn(true); // When boolean networkAvailable = NetworkUtils.isNetworkAvailable(context); // Then assertThat(networkAvailable).isTrue(); } @Test public void should_return_false_when_network_is_null_or_not_connected() { // Given When when(manager.getActiveNetworkInfo().isConnected()).thenReturn(false); boolean res1 = NetworkUtils.isNetworkAvailable(context); when(manager.getActiveNetworkInfo()).thenReturn(null); boolean res2 = NetworkUtils.isNetworkAvailable(context); // Then assertThat(res1).isEqualTo(res2); assertThat(res1).isFalse(); } @Test public void should_return_same_url_if_absolute() { // Given String url = "http://www.nilhcem.com"; // When String result = NetworkUtils.getAbsoluteUrl(url); // Then assertThat(result).isEqualTo(url); } @Test public void should_transform_relative_to_absolute_url() { // Given String url = "/imgs/nilhcem.jpg"; // When String result = NetworkUtils.getAbsoluteUrl(url); // Then assertThat(result).isEqualTo(BuildConfig.WS_ENDPOINT + url); } @Test public void should_return_twitter_url_from_username() { // Given String username = "Nilhcem"; // When String twitterUrl = NetworkUtils.getTwitterUrl(username); // Then assertThat(twitterUrl.toLowerCase(Locale.US)).isEqualTo("http://www.twitter.com/#!/nilhcem"); } }