summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/test
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-02-15 23:32:01 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-02-15 23:32:01 +0100
commit5c993e2e04e91cc29d4ec67546ac699da832b0de (patch)
tree0b0c70a94ce30384bdf54a298145a02ae29387d1 /android/app/src/test
parentbf4fc6d570e6ef468c040dadeaabb1b943124f41 (diff)
parent4a9f3b1f059c638dce7c8d1a8e1cf26d8916c3f1 (diff)
downloadmullvadvpn-5c993e2e04e91cc29d4ec67546ac699da832b0de.tar.xz
mullvadvpn-5c993e2e04e91cc29d4ec67546ac699da832b0de.zip
Merge branch 'implement-split-tunneling-toggle-button-droid-458'
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