summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/test
diff options
context:
space:
mode:
authorMaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com>2023-11-27 14:38:05 +0100
committerMaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com>2023-12-04 11:34:15 +0100
commit62fa2db4f196adfda37b2cb0dc01492c07849e9a (patch)
treeab768099b0fe8c7288b0d73624152aa1832a3f1c /android/app/src/test
parent1e64dcdbd9d82173c65a4d4b49f72f80f7de8269 (diff)
downloadmullvadvpn-62fa2db4f196adfda37b2cb0dc01492c07849e9a.tar.xz
mullvadvpn-62fa2db4f196adfda37b2cb0dc01492c07849e9a.zip
Add select location screen and viewmodel 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/SelectLocationViewModelTest.kt61
1 files changed, 56 insertions, 5 deletions
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModelTest.kt
index 44be67fa64..74d7d80c19 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModelTest.kt
@@ -15,7 +15,11 @@ import kotlinx.coroutines.test.runTest
import net.mullvad.mullvadvpn.compose.state.SelectLocationUiState
import net.mullvad.mullvadvpn.lib.common.test.TestCoroutineRule
import net.mullvad.mullvadvpn.lib.common.test.assertLists
+import net.mullvad.mullvadvpn.model.Constraint
import net.mullvad.mullvadvpn.model.GeographicLocationConstraint
+import net.mullvad.mullvadvpn.model.Ownership
+import net.mullvad.mullvadvpn.model.Providers
+import net.mullvad.mullvadvpn.relaylist.Provider
import net.mullvad.mullvadvpn.relaylist.RelayCountry
import net.mullvad.mullvadvpn.relaylist.RelayItem
import net.mullvad.mullvadvpn.relaylist.RelayList
@@ -23,6 +27,7 @@ import net.mullvad.mullvadvpn.relaylist.filterOnSearchTerm
import net.mullvad.mullvadvpn.ui.serviceconnection.ConnectionProxy
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
import net.mullvad.mullvadvpn.ui.serviceconnection.connectionProxy
+import net.mullvad.mullvadvpn.usecase.RelayListFilterUseCase
import net.mullvad.mullvadvpn.usecase.RelayListUseCase
import org.junit.After
import org.junit.Before
@@ -32,21 +37,31 @@ import org.junit.Test
class SelectLocationViewModelTest {
@get:Rule val testCoroutineRule = TestCoroutineRule()
+ private val mockRelayListFilterUseCase: RelayListFilterUseCase = mockk(relaxed = true)
private val mockServiceConnectionManager: ServiceConnectionManager = mockk()
private lateinit var viewModel: SelectLocationViewModel
-
private val relayListWithSelectionFlow = MutableStateFlow(RelayList(emptyList(), null))
-
private val mockRelayListUseCase: RelayListUseCase = mockk()
+ private val selectedOwnership = MutableStateFlow<Constraint<Ownership>>(Constraint.Any())
+ private val selectedProvider = MutableStateFlow<Constraint<Providers>>(Constraint.Any())
+ private val allProvider = MutableStateFlow<List<Provider>>(emptyList())
@Before
fun setup() {
+
+ every { mockRelayListFilterUseCase.selectedOwnership() } returns selectedOwnership
+ every { mockRelayListFilterUseCase.selectedProviders() } returns selectedProvider
+ every { mockRelayListFilterUseCase.availableProviders() } returns allProvider
every { mockRelayListUseCase.relayListWithSelection() } returns relayListWithSelectionFlow
mockkStatic(SERVICE_CONNECTION_MANAGER_EXTENSIONS)
mockkStatic(RELAY_LIST_EXTENSIONS)
-
- viewModel = SelectLocationViewModel(mockServiceConnectionManager, mockRelayListUseCase)
+ viewModel =
+ SelectLocationViewModel(
+ mockServiceConnectionManager,
+ mockRelayListUseCase,
+ mockRelayListFilterUseCase
+ )
}
@After
@@ -164,11 +179,47 @@ class SelectLocationViewModelTest {
// Assert
val actualState = awaitItem()
- assertIs<SelectLocationUiState.NoSearchResultFound>(actualState)
+ assertIs<SelectLocationUiState.ShowData>(actualState)
assertEquals(mockSearchString, actualState.searchTerm)
}
}
+ @Test
+ fun testRemoveOwnerFilter() = runTest {
+ // Arrange
+ val mockSelectedProviders: Constraint<Providers> = mockk()
+ every { mockRelayListFilterUseCase.selectedProviders() } returns
+ MutableStateFlow(mockSelectedProviders)
+
+ // Act
+ viewModel.removeOwnerFilter()
+ // Assert
+ verify {
+ mockRelayListFilterUseCase.updateOwnershipAndProviderFilter(
+ any<Constraint.Any<Ownership>>(),
+ mockSelectedProviders
+ )
+ }
+ }
+
+ @Test
+ fun testRemoveProviderFilter() = runTest {
+ // Arrange
+ val mockSelectedOwnership: Constraint<Ownership> = mockk()
+ every { mockRelayListFilterUseCase.selectedOwnership() } returns
+ MutableStateFlow(mockSelectedOwnership)
+
+ // Act
+ viewModel.removeProviderFilter()
+ // Assert
+ verify {
+ mockRelayListFilterUseCase.updateOwnershipAndProviderFilter(
+ mockSelectedOwnership,
+ any<Constraint.Any<Providers>>()
+ )
+ }
+ }
+
companion object {
private const val SERVICE_CONNECTION_MANAGER_EXTENSIONS =
"net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManagerExtensionsKt"