diff options
| author | MaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com> | 2023-12-05 10:26:14 +0100 |
|---|---|---|
| committer | MaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com> | 2023-12-07 10:33:09 +0100 |
| commit | 12b27e55131f3a534fabb5622895dfcd0193f0e2 (patch) | |
| tree | ee0f2544a1eb62ab82b5d5729b5311f1bbe9b33c /android | |
| parent | f0bc888b3ced3f3ae48fdc15ae7dee851aa71de0 (diff) | |
| download | mullvadvpn-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.kt | 31 |
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()) } } |
