summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/androidTest
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src/androidTest')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt99
1 files changed, 99 insertions, 0 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt
new file mode 100644
index 0000000000..1590dcc497
--- /dev/null
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt
@@ -0,0 +1,99 @@
+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.Runs
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.just
+import io.mockk.verify
+import kotlinx.coroutines.flow.MutableStateFlow
+import net.mullvad.mullvadvpn.compose.component.AppTheme
+import net.mullvad.mullvadvpn.compose.state.DeviceRevokedUiState
+import net.mullvad.mullvadvpn.viewmodel.DeviceRevokedViewModel
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+
+class DeviceRevokedScreenTest {
+ @get:Rule
+ val composeTestRule = createComposeRule()
+
+ @MockK
+ lateinit var mockedViewModel: DeviceRevokedViewModel
+
+ @Before
+ fun setup() {
+ MockKAnnotations.init(this)
+ every { mockedViewModel.onGoToLoginClicked() } just Runs
+ }
+
+ @Test
+ fun testUnblockWarningShowingWhenSecured() {
+ // Arrange
+ every {
+ mockedViewModel.uiState
+ } returns MutableStateFlow(DeviceRevokedUiState(isSecured = true))
+
+ // Act
+ composeTestRule.setContent {
+ AppTheme {
+ DeviceRevokedScreen(mockedViewModel)
+ }
+ }
+
+ // Assert
+ composeTestRule
+ .onNodeWithText(UNBLOCK_WARNING)
+ .assertExists()
+ }
+
+ @Test
+ fun testUnblockWarningNotShowingWhenNotSecured() {
+ // Arrange
+ every {
+ mockedViewModel.uiState
+ } returns MutableStateFlow(DeviceRevokedUiState(isSecured = false))
+
+ // Act
+ composeTestRule.setContent {
+ AppTheme {
+ DeviceRevokedScreen(mockedViewModel)
+ }
+ }
+
+ // Assert
+ composeTestRule
+ .onNodeWithText(UNBLOCK_WARNING)
+ .assertDoesNotExist()
+ }
+
+ @Test
+ fun testGoToLogin() {
+ // Arrange
+ every {
+ mockedViewModel.uiState
+ } returns MutableStateFlow(DeviceRevokedUiState(isSecured = false))
+ composeTestRule.setContent {
+ AppTheme {
+ DeviceRevokedScreen(mockedViewModel)
+ }
+ }
+
+ // Act
+ composeTestRule
+ .onNodeWithText(GO_TO_LOGIN_BUTTON_TEXT)
+ .performClick()
+
+ // Assert
+ verify { mockedViewModel.onGoToLoginClicked() }
+ }
+
+ companion object {
+ private const val GO_TO_LOGIN_BUTTON_TEXT = "Go to login"
+ private const val UNBLOCK_WARNING =
+ "Going to login will unblock the internet on this device."
+ }
+}