diff options
| author | MaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com> | 2023-12-06 14:59:43 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-02-15 23:28:31 +0100 |
| commit | 54db57a5346c5dc4de78d48b606ee3267cb6f06b (patch) | |
| tree | e4bff36b6e13522294011daa76ee217ef0270151 /android | |
| parent | 6aff63d1b8c0ce415ac1222fe36e19101d0e49ec (diff) | |
| download | mullvadvpn-54db57a5346c5dc4de78d48b606ee3267cb6f06b.tar.xz mullvadvpn-54db57a5346c5dc4de78d48b606ee3267cb6f06b.zip | |
Add test for split tunneling view model and update the other tests
Co-Authored-By: Boban Sijuk <49131853+Boki91@users.noreply.github.com>
Diffstat (limited to 'android')
2 files changed, 55 insertions, 5 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SplitTunnelingScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SplitTunnelingScreenTest.kt index a4f6d1ab4a..8b3cdeca2e 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SplitTunnelingScreenTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SplitTunnelingScreenTest.kt @@ -34,7 +34,9 @@ class SplitTunnelingScreenTest { fun testLoadingState() = composeExtension.use { // Arrange - setContentWithTheme { SplitTunnelingScreen(uiState = SplitTunnelingUiState.Loading) } + setContentWithTheme { + SplitTunnelingScreen(uiState = SplitTunnelingUiState.Loading(enabled = true)) + } // Assert onNodeWithText(TITLE).assertExists() @@ -64,6 +66,7 @@ class SplitTunnelingScreenTest { SplitTunnelingScreen( uiState = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = listOf(excludedApp), includedApps = listOf(includedApp), showSystemApps = false @@ -95,6 +98,7 @@ class SplitTunnelingScreenTest { SplitTunnelingScreen( uiState = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = emptyList(), includedApps = listOf(includedApp), showSystemApps = false @@ -133,6 +137,7 @@ class SplitTunnelingScreenTest { SplitTunnelingScreen( uiState = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = listOf(excludedApp), includedApps = listOf(includedApp), showSystemApps = false @@ -169,6 +174,7 @@ class SplitTunnelingScreenTest { SplitTunnelingScreen( uiState = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = listOf(excludedApp), includedApps = listOf(includedApp), showSystemApps = false @@ -205,6 +211,7 @@ class SplitTunnelingScreenTest { SplitTunnelingScreen( uiState = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = listOf(excludedApp), includedApps = listOf(includedApp), showSystemApps = false diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt index 7b2b4cacd5..c0d349e1da 100644 --- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt @@ -57,7 +57,7 @@ class SplitTunnelingViewModelTest { initTestSubject(emptyList()) val actualState: SplitTunnelingUiState = testSubject.uiState.value - val initialExpectedState = SplitTunnelingUiState.Loading + val initialExpectedState = SplitTunnelingUiState.Loading(enabled = false) assertEquals(initialExpectedState, actualState) @@ -70,9 +70,14 @@ class SplitTunnelingViewModelTest { { lambda<(Set<String>) -> Unit>().invoke(emptySet()) } + every { mockedSplitTunneling.enabledChange = captureLambda() } answers + { + lambda<(Boolean) -> Unit>().invoke(true) + } initTestSubject(emptyList()) val expectedState = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = emptyList(), includedApps = emptyList(), showSystemApps = false @@ -88,11 +93,16 @@ class SplitTunnelingViewModelTest { { lambda<(Set<String>) -> Unit>().invoke(setOf(appExcluded.packageName)) } + every { mockedSplitTunneling.enabledChange = captureLambda() } answers + { + lambda<(Boolean) -> Unit>().invoke(true) + } initTestSubject(listOf(appExcluded, appNotExcluded)) val expectedState = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = listOf(appExcluded), includedApps = listOf(appNotExcluded), showSystemApps = false @@ -102,7 +112,7 @@ class SplitTunnelingViewModelTest { val actualState = awaitItem() assertEquals(expectedState, actualState) verifyAll { - mockedSplitTunneling.enabled + mockedSplitTunneling.enabledChange = any() mockedSplitTunneling.excludedAppsChange = any() } } @@ -118,17 +128,23 @@ class SplitTunnelingViewModelTest { excludedAppsCallback = lambda() excludedAppsCallback.invoke(setOf(app.packageName)) } + every { mockedSplitTunneling.enabledChange = captureLambda() } answers + { + lambda<(Boolean) -> Unit>().invoke(true) + } initTestSubject(listOf(app)) val expectedStateBeforeAction = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = listOf(app), includedApps = emptyList(), showSystemApps = false ) val expectedStateAfterAction = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = emptyList(), includedApps = listOf(app), showSystemApps = false @@ -141,7 +157,7 @@ class SplitTunnelingViewModelTest { assertEquals(expectedStateAfterAction, awaitItem()) verifyAll { - mockedSplitTunneling.enabled + mockedSplitTunneling.enabledChange = any() mockedSplitTunneling.excludedAppsChange = any() mockedSplitTunneling.includeApp(app.packageName) } @@ -158,11 +174,16 @@ class SplitTunnelingViewModelTest { excludedAppsCallback = lambda() excludedAppsCallback.invoke(emptySet()) } + every { mockedSplitTunneling.enabledChange = captureLambda() } answers + { + lambda<(Boolean) -> Unit>().invoke(true) + } initTestSubject(listOf(app)) val expectedStateBeforeAction = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = emptyList(), includedApps = listOf(app), showSystemApps = false @@ -170,6 +191,7 @@ class SplitTunnelingViewModelTest { val expectedStateAfterAction = SplitTunnelingUiState.ShowAppList( + enabled = true, excludedApps = listOf(app), includedApps = emptyList(), showSystemApps = false @@ -182,13 +204,34 @@ class SplitTunnelingViewModelTest { assertEquals(expectedStateAfterAction, awaitItem()) verifyAll { - mockedSplitTunneling.enabled + mockedSplitTunneling.enabledChange = any() mockedSplitTunneling.excludedAppsChange = any() mockedSplitTunneling.excludeApp(app.packageName) } } } + @Test + fun test_disabled_state() = runTest { + every { mockedSplitTunneling.excludedAppsChange = captureLambda() } answers + { + lambda<(Set<String>) -> Unit>().invoke(emptySet()) + } + every { mockedSplitTunneling.enabledChange = captureLambda() } answers + { + lambda<(Boolean) -> Unit>().invoke(false) + } + + initTestSubject(emptyList()) + + val expectedState = SplitTunnelingUiState.ShowAppList(enabled = false) + + testSubject.uiState.test { + val actualState = awaitItem() + assertEquals(expectedState, actualState) + } + } + private fun initTestSubject(appList: List<AppData>) { every { mockedApplicationsProvider.getAppsList() } returns appList every { mockedServiceConnectionManager.connectionState } returns |
