BIT-1031: Add shell for the delete account UI (#241)

This commit is contained in:
David Perez
2023-11-13 13:17:16 -06:00
committed by GitHub
parent fb48dd0ef2
commit 345aa4800d
18 changed files with 528 additions and 10 deletions

View File

@@ -33,6 +33,7 @@ import org.junit.Test
class AccountSecurityScreenTest : BaseComposeTest() {
private var onNavigateBackCalled = false
private var onNavigateToDeleteAccountCalled = false
private val intentHandler = mockk<IntentHandler> {
every { launchUri(any()) } just runs
@@ -51,6 +52,7 @@ class AccountSecurityScreenTest : BaseComposeTest() {
composeTestRule.setContent {
AccountSecurityScreen(
onNavigateBack = { onNavigateBackCalled = true },
onNavigateToDeleteAccount = { onNavigateToDeleteAccountCalled = true },
viewModel = viewModel,
intentHandler = intentHandler,
)
@@ -236,6 +238,12 @@ class AccountSecurityScreenTest : BaseComposeTest() {
assertTrue(onNavigateBackCalled)
}
@Test
fun `on NavigateToDeleteAccount should call onNavigateToDeleteAccountCalled`() {
mutableEventFlow.tryEmit(AccountSecurityEvent.NavigateToDeleteAccount)
assertTrue(onNavigateToDeleteAccountCalled)
}
@Test
fun `confirm dialog be shown or hidden according to the state`() {
composeTestRule.onNode(isDialog()).assertDoesNotExist()

View File

@@ -62,14 +62,11 @@ class AccountSecurityViewModelTest : BaseViewModelTest() {
}
@Test
fun `on DeleteAccountClick should emit ShowToast`() = runTest {
fun `on DeleteAccountClick should emit NavigateToDeleteAccount`() = runTest {
val viewModel = createViewModel()
viewModel.eventFlow.test {
viewModel.trySendAction(AccountSecurityAction.DeleteAccountClick)
assertEquals(
AccountSecurityEvent.ShowToast("Not yet implemented.".asText()),
awaitItem(),
)
assertEquals(AccountSecurityEvent.NavigateToDeleteAccount, awaitItem())
}
}

View File

@@ -0,0 +1,40 @@
package com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity.deleteaccount
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
import io.mockk.every
import io.mockk.mockk
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
class DeleteAccountScreenTest : BaseComposeTest() {
private var onNavigateBackCalled = false
private val mutableEventFlow = MutableSharedFlow<DeleteAccountEvent>(
extraBufferCapacity = Int.MAX_VALUE,
)
private val mutableStateFlow = MutableStateFlow(Unit)
private val viewModel = mockk<DeleteAccountViewModel>(relaxed = true) {
every { eventFlow } returns mutableEventFlow
every { stateFlow } returns mutableStateFlow
}
@Before
fun setUp() {
composeTestRule.setContent {
DeleteAccountScreen(
onNavigateBack = { onNavigateBackCalled = true },
viewModel = viewModel,
)
}
}
@Test
fun `on NavigateBack should call onNavigateBack`() {
mutableEventFlow.tryEmit(DeleteAccountEvent.NavigateBack)
assertTrue(onNavigateBackCalled)
}
}

View File

@@ -0,0 +1,43 @@
package com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity.deleteaccount
import app.cash.turbine.test
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
import com.x8bit.bitwarden.ui.platform.base.util.asText
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
class DeleteAccountViewModelTest : BaseViewModelTest() {
@Test
fun `on CancelClick should emit NavigateBack`() = runTest {
val viewModel = createViewModel()
viewModel.eventFlow.test {
viewModel.trySendAction(DeleteAccountAction.CancelClick)
assertEquals(DeleteAccountEvent.NavigateBack, awaitItem())
}
}
@Test
fun `on CloseClick should emit NavigateBack`() = runTest {
val viewModel = createViewModel()
viewModel.eventFlow.test {
viewModel.trySendAction(DeleteAccountAction.CloseClick)
assertEquals(DeleteAccountEvent.NavigateBack, awaitItem())
}
}
@Test
fun `on DeleteAccountClick should emit ShowToast`() = runTest {
val viewModel = createViewModel()
viewModel.eventFlow.test {
viewModel.trySendAction(DeleteAccountAction.DeleteAccountClick)
assertEquals(
DeleteAccountEvent.ShowToast("Not yet implemented.".asText()),
awaitItem(),
)
}
}
private fun createViewModel(): DeleteAccountViewModel = DeleteAccountViewModel()
}

View File

@@ -34,6 +34,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
onNodeWithText("My vault").performClick()
@@ -56,6 +57,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
runOnIdle { fakeNavHostController.assertCurrentRoute("vault") }
@@ -79,6 +81,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
onNodeWithText("Send").performClick()
@@ -101,6 +104,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
runOnIdle { fakeNavHostController.assertCurrentRoute("vault") }
@@ -124,6 +128,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
onNodeWithText("Generator").performClick()
@@ -146,6 +151,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
runOnIdle { fakeNavHostController.assertCurrentRoute("vault") }
@@ -169,6 +175,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
onNodeWithText("Settings").performClick()
@@ -191,6 +198,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
navController = fakeNavHostController,
onNavigateToVaultAddItem = {},
onNavigateToNewSend = {},
onNavigateToDeleteAccount = {},
)
}
runOnIdle { fakeNavHostController.assertCurrentRoute("vault") }