summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/androidTest
diff options
context:
space:
mode:
authorsaber safavi <saber.safavi@codic.se>2022-10-10 14:34:14 +0200
committersaber safavi <saber.safavi@codic.se>2022-11-18 10:18:48 +0100
commit678c2abac8641416cb34e389965525f8f78ab945 (patch)
tree2b4af5f4fca2cf46ed3cf5060e17786dfe27efd7 /android/app/src/androidTest
parentaff2dda86ab891b98387804eff8c3e8124c7c02c (diff)
downloadmullvadvpn-678c2abac8641416cb34e389965525f8f78ab945.tar.xz
mullvadvpn-678c2abac8641416cb34e389965525f8f78ab945.zip
Add changelog dialog to android
Diffstat (limited to 'android/app/src/androidTest')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt74
1 files changed, 74 insertions, 0 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt
new file mode 100644
index 0000000000..dab5bf0a60
--- /dev/null
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt
@@ -0,0 +1,74 @@
+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.component.ChangelogDialog
+import net.mullvad.mullvadvpn.viewmodel.ChangelogDialogUiState
+import net.mullvad.mullvadvpn.viewmodel.ChangelogViewModel
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+
+class ChangelogDialogTest {
+ @get:Rule
+ val composeTestRule = createComposeRule()
+
+ @MockK
+ lateinit var mockedViewModel: ChangelogViewModel
+
+ @Before
+ fun setup() {
+ MockKAnnotations.init(this)
+ }
+
+ @Test
+ fun testShowChangeLogWhenNeeded() {
+ // Arrange
+ every {
+ mockedViewModel.changelogDialogUiState
+ } returns MutableStateFlow(ChangelogDialogUiState.Show(listOf(CHANGELOG_ITEM)))
+ every {
+ mockedViewModel.dismissChangelogDialog()
+ } just Runs
+
+ composeTestRule.setContent {
+ AppTheme {
+ ChangelogDialog(
+ changesList = listOf(CHANGELOG_ITEM),
+ version = CHANGELOG_VERSION,
+ onDismiss = {
+ mockedViewModel.dismissChangelogDialog()
+ }
+ )
+ }
+ }
+
+ // Check changelog content showed within dialog
+ composeTestRule
+ .onNodeWithText(CHANGELOG_ITEM)
+ .assertExists()
+
+ // perform click on Got It button to check if dismiss occur
+ composeTestRule
+ .onNodeWithText(CHANGELOG_BUTTON_TEXT)
+ .performClick()
+
+ // Assert
+ verify { mockedViewModel.dismissChangelogDialog() }
+ }
+
+ companion object {
+ private const val CHANGELOG_BUTTON_TEXT = "Got it!"
+ private const val CHANGELOG_ITEM = "Changelog item"
+ private const val CHANGELOG_VERSION = "1234.5"
+ }
+}