diff options
| author | MaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com> | 2023-11-27 14:37:32 +0100 |
|---|---|---|
| committer | MaryamShaghaghi <122574719+MaryamShaghaghi@users.noreply.github.com> | 2023-12-04 11:33:59 +0100 |
| commit | 1e64dcdbd9d82173c65a4d4b49f72f80f7de8269 (patch) | |
| tree | b2b1fcec30e0b2f89732abe653054b652176a68d /android/app/src/androidTest | |
| parent | ba4658d9545d926bfe08341a5bc80c63b3a09d3e (diff) | |
| download | mullvadvpn-1e64dcdbd9d82173c65a4d4b49f72f80f7de8269.tar.xz mullvadvpn-1e64dcdbd9d82173c65a4d4b49f72f80f7de8269.zip | |
Add filter screen and viewmodel tests
Co-Authored-By: Boban Sijuk <49131853+boki91@users.noreply.github.com>
Diffstat (limited to 'android/app/src/androidTest')
| -rw-r--r-- | android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreenTest.kt | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreenTest.kt new file mode 100644 index 0000000000..b5f762b89b --- /dev/null +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreenTest.kt @@ -0,0 +1,191 @@ +package net.mullvad.mullvadvpn.compose.screen + +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick +import io.mockk.MockKAnnotations +import io.mockk.mockk +import io.mockk.verify +import kotlinx.coroutines.flow.MutableSharedFlow +import net.mullvad.mullvadvpn.compose.setContentWithTheme +import net.mullvad.mullvadvpn.compose.state.RelayFilterState +import net.mullvad.mullvadvpn.model.Ownership +import net.mullvad.mullvadvpn.relaylist.Provider +import org.junit.Rule +import org.junit.Test + +class FilterScreenTest { + @get:Rule val composeTestRule = createComposeRule() + + fun setup() { + MockKAnnotations.init(this) + } + + @Test + fun testDefaultState() { + composeTestRule.setContentWithTheme { + FilterScreen( + uiState = + RelayFilterState( + allProviders = DUMMY_RELAY_ALL_PROVIDERS, + selectedOwnership = null, + selectedProviders = DUMMY_SELECTED_PROVIDERS, + ), + uiCloseAction = MutableSharedFlow(), + onSelectedProviders = { _, _ -> } + ) + } + composeTestRule.apply { + onNodeWithText("Ownership").assertExists() + onNodeWithText("Providers").assertExists() + } + } + + @Test + fun testIsAnyCellShowing() { + composeTestRule.setContentWithTheme { + FilterScreen( + uiState = + RelayFilterState( + allProviders = DUMMY_RELAY_ALL_PROVIDERS, + selectedOwnership = null, + selectedProviders = DUMMY_SELECTED_PROVIDERS + ), + uiCloseAction = MutableSharedFlow(), + onSelectedProviders = { _, _ -> } + ) + } + composeTestRule.apply { + onNodeWithText("Ownership").performClick() + onNodeWithText("Any").assertExists() + } + } + + @Test + fun testIsMullvadCellShowing() { + composeTestRule.setContentWithTheme { + FilterScreen( + uiState = + RelayFilterState( + allProviders = DUMMY_RELAY_ALL_PROVIDERS, + selectedOwnership = Ownership.MullvadOwned, + selectedProviders = DUMMY_SELECTED_PROVIDERS + ), + uiCloseAction = MutableSharedFlow(), + onSelectedProviders = { _, _ -> } + ) + } + composeTestRule.apply { + onNodeWithText("Ownership").performClick() + onNodeWithText("Mullvad owned only").assertExists() + } + } + + @Test + fun testIsRentedCellShowing() { + composeTestRule.setContentWithTheme { + FilterScreen( + uiState = + RelayFilterState( + allProviders = DUMMY_RELAY_ALL_PROVIDERS, + selectedOwnership = Ownership.Rented, + selectedProviders = DUMMY_SELECTED_PROVIDERS + ), + uiCloseAction = MutableSharedFlow(), + onSelectedProviders = { _, _ -> } + ) + } + composeTestRule.apply { + onNodeWithText("Ownership").performClick() + onNodeWithText("Rented only").assertExists() + } + } + + @Test + fun testShowProviders() { + composeTestRule.setContentWithTheme { + FilterScreen( + uiState = + RelayFilterState( + allProviders = DUMMY_RELAY_ALL_PROVIDERS, + selectedOwnership = null, + selectedProviders = DUMMY_SELECTED_PROVIDERS + ), + uiCloseAction = MutableSharedFlow(), + onSelectedProviders = { _, _ -> } + ) + } + + composeTestRule.apply { + onNodeWithText("Providers").performClick() + onNodeWithText("Creanova").assertExists() + onNodeWithText("Creanova").assertExists() + onNodeWithText("100TB").assertExists() + } + } + + @Test + fun testApplyButtonClick() { + val mockClickListener: () -> Unit = mockk(relaxed = true) + composeTestRule.setContentWithTheme { + FilterScreen( + uiState = + RelayFilterState( + allProviders = listOf(), + selectedOwnership = null, + selectedProviders = listOf(Provider("31173", true)) + ), + uiCloseAction = MutableSharedFlow(), + onSelectedProviders = { _, _ -> }, + onApplyClick = mockClickListener + ) + } + composeTestRule.onNodeWithText("Apply").performClick() + verify { mockClickListener() } + } + + companion object { + + private val DUMMY_RELAY_ALL_PROVIDERS = + listOf( + Provider("31173", true), + Provider("100TB", false), + Provider("Blix", true), + Provider("Creanova", true), + Provider("DataPacket", false), + Provider("HostRoyale", false), + Provider("hostuniversal", false), + Provider("iRegister", false), + Provider("M247", false), + Provider("Makonix", false), + Provider("PrivateLayer", false), + Provider("ptisp", false), + Provider("Qnax", false), + Provider("Quadranet", false), + Provider("techfutures", false), + Provider("Tzulo", false), + Provider("xtom", false) + ) + + private val DUMMY_SELECTED_PROVIDERS = + listOf( + Provider("31173", true), + Provider("100TB", false), + Provider("Blix", true), + Provider("Creanova", true), + Provider("DataPacket", false), + Provider("HostRoyale", false), + Provider("hostuniversal", false), + Provider("iRegister", false), + Provider("M247", false), + Provider("Makonix", false), + Provider("PrivateLayer", false), + Provider("ptisp", false), + Provider("Qnax", false), + Provider("Quadranet", false), + Provider("techfutures", false), + Provider("Tzulo", false), + Provider("xtom", false) + ) + } +} |
