summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorMaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com>2023-12-05 10:26:14 +0100
committerMaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com>2023-12-07 10:33:09 +0100
commit12b27e55131f3a534fabb5622895dfcd0193f0e2 (patch)
treeee0f2544a1eb62ab82b5d5729b5311f1bbe9b33c /android
parentf0bc888b3ced3f3ae48fdc15ae7dee851aa71de0 (diff)
downloadmullvadvpn-12b27e55131f3a534fabb5622895dfcd0193f0e2.tar.xz
mullvadvpn-12b27e55131f3a534fabb5622895dfcd0193f0e2.zip
Add unit test in the login view model test
Co-Authored-By: Boban Sijuk <49131853+Boki91@users.noreply.github.com>
Diffstat (limited to 'android')
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt31
1 files changed, 29 insertions, 2 deletions
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt
index 2ada5bf767..7eb35404d0 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt
@@ -14,7 +14,9 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.setMain
import net.mullvad.mullvadvpn.compose.state.LoginError
-import net.mullvad.mullvadvpn.compose.state.LoginState.*
+import net.mullvad.mullvadvpn.compose.state.LoginState.Idle
+import net.mullvad.mullvadvpn.compose.state.LoginState.Loading
+import net.mullvad.mullvadvpn.compose.state.LoginState.Success
import net.mullvad.mullvadvpn.compose.state.LoginUiState
import net.mullvad.mullvadvpn.lib.common.test.TestCoroutineRule
import net.mullvad.mullvadvpn.model.AccountCreationResult
@@ -24,6 +26,7 @@ import net.mullvad.mullvadvpn.model.DeviceListEvent
import net.mullvad.mullvadvpn.model.LoginResult
import net.mullvad.mullvadvpn.repository.AccountRepository
import net.mullvad.mullvadvpn.repository.DeviceRepository
+import net.mullvad.mullvadvpn.usecase.ConnectivityUseCase
import net.mullvad.mullvadvpn.usecase.NewDeviceNotificationUseCase
import org.junit.Assert.assertEquals
import org.junit.Before
@@ -33,6 +36,7 @@ import org.junit.Test
class LoginViewModelTest {
@get:Rule val testCoroutineRule = TestCoroutineRule()
+ @MockK private lateinit var connectivityUseCase: ConnectivityUseCase
@MockK private lateinit var mockedAccountRepository: AccountRepository
@MockK private lateinit var mockedDeviceRepository: DeviceRepository
@MockK private lateinit var mockedNewDeviceNotificationUseCase: NewDeviceNotificationUseCase
@@ -42,9 +46,10 @@ class LoginViewModelTest {
@Before
fun setup() {
+
Dispatchers.setMain(UnconfinedTestDispatcher())
MockKAnnotations.init(this, relaxUnitFun = true)
-
+ every { connectivityUseCase.isInternetAvailable() } returns true
every { mockedAccountRepository.accountHistory } returns accountHistoryTestEvents
every { mockedNewDeviceNotificationUseCase.newDeviceCreated() } returns Unit
@@ -53,11 +58,33 @@ class LoginViewModelTest {
mockedAccountRepository,
mockedDeviceRepository,
mockedNewDeviceNotificationUseCase,
+ connectivityUseCase,
UnconfinedTestDispatcher()
)
}
@Test
+ fun testIsInternetAvailableWithoutInternet() = runTest {
+ turbineScope {
+ // Arrange
+ every { connectivityUseCase.isInternetAvailable() } returns false
+ val uiStates = loginViewModel.uiState.testIn(backgroundScope)
+
+ // Act
+ loginViewModel.login("")
+
+ // Discard default item
+ uiStates.awaitItem()
+
+ // Assert
+ assertEquals(
+ Idle(loginError = LoginError.NoInternetConnection),
+ uiStates.awaitItem().loginState
+ )
+ }
+ }
+
+ @Test
fun testDefaultState() = runTest {
loginViewModel.uiState.test { assertEquals(LoginUiState.INITIAL, awaitItem()) }
}