summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/test
diff options
context:
space:
mode:
authorMaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com>2023-12-06 14:59:43 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-02-15 23:28:31 +0100
commit54db57a5346c5dc4de78d48b606ee3267cb6f06b (patch)
treee4bff36b6e13522294011daa76ee217ef0270151 /android/app/src/test
parent6aff63d1b8c0ce415ac1222fe36e19101d0e49ec (diff)
downloadmullvadvpn-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/app/src/test')
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt51
1 files changed, 47 insertions, 4 deletions
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