From 2d64cf8e4ca9639295d50fc38a94cc0dbed65129 Mon Sep 17 00:00:00 2001 From: Suraj Shah Date: Sat, 25 Jan 2020 01:43:28 +0000 Subject: [PATCH] Connectivity manager tests (#7317) * Fixes #7316 Adds tests for ConnectivityManager.isOnline * Fixes detekt errors. * Cleaning tests * Cleaning tests to use boolean checks instead of object equals --- .../fenix/ext/ConnectivityManagerTest.kt | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 app/src/test/java/org/mozilla/fenix/ext/ConnectivityManagerTest.kt diff --git a/app/src/test/java/org/mozilla/fenix/ext/ConnectivityManagerTest.kt b/app/src/test/java/org/mozilla/fenix/ext/ConnectivityManagerTest.kt new file mode 100644 index 000000000..55bb09a07 --- /dev/null +++ b/app/src/test/java/org/mozilla/fenix/ext/ConnectivityManagerTest.kt @@ -0,0 +1,86 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.ext + +import android.net.ConnectivityManager +import android.net.Network +import android.net.NetworkCapabilities +import io.mockk.every +import io.mockk.mockk +import io.mockk.mockkStatic +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mozilla.fenix.TestApplication +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(application = TestApplication::class) +class ConnectivityManagerTest { + + private lateinit var connectivityManager: ConnectivityManager + + @Before + fun setup() { + connectivityManager = mockk(relaxed = true) + + mockkStatic("org.mozilla.fenix.ext.ConnectivityManagerKt") + } + + @Test + fun `connectManager is online works`() { + + val network = mockk() + val networkCapabilities = mockk() + + every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns true + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns true + + assertTrue(connectivityManager.isOnline(network)) + } + + @Test + fun `connectManager is online with null network works`() { + + val network: Network? = null + val networkCapabilities = mockk() + + every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns true + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns true + + assertFalse(connectivityManager.isOnline(network)) + } + + @Test + fun `connectManager is online with unvalidated connection works`() { + + val network = mockk() + val networkCapabilities = mockk() + + every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns true + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns false + + assertFalse(connectivityManager.isOnline(network)) + } + + @Test + fun `connectManager is online with no connection works`() { + + val network = mockk() + val networkCapabilities = mockk() + + every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns false + every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns true + + assertFalse(connectivityManager.isOnline(network)) + } +}