mirror of
https://github.com/bitwarden/android.git
synced 2026-08-01 18:53:39 -05:00
PM-18370: Allow selecting type of cipher to add from collection list (#4741)
This commit is contained in:
+12
-3
@@ -66,6 +66,7 @@ import io.mockk.mockkStatic
|
||||
import io.mockk.runs
|
||||
import io.mockk.unmockkStatic
|
||||
import io.mockk.verify
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import org.junit.After
|
||||
@@ -2137,7 +2138,11 @@ class VaultItemListingScreenTest : BaseComposeTest() {
|
||||
@Test
|
||||
fun `VaultItemTypeSelection dialog state show vault item type selection dialog`() {
|
||||
mutableStateFlow.update {
|
||||
it.copy(dialogState = VaultItemListingState.DialogState.VaultItemTypeSelection)
|
||||
it.copy(
|
||||
dialogState = VaultItemListingState.DialogState.VaultItemTypeSelection(
|
||||
excludedOptions = persistentListOf(CreateVaultItemType.SSH_KEY),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
composeTestRule
|
||||
@@ -2153,7 +2158,11 @@ class VaultItemListingScreenTest : BaseComposeTest() {
|
||||
@Test
|
||||
fun `when option is selected in VaultItemTypeSelection dialog add item action is sent`() {
|
||||
mutableStateFlow.update {
|
||||
it.copy(dialogState = VaultItemListingState.DialogState.VaultItemTypeSelection)
|
||||
it.copy(
|
||||
dialogState = VaultItemListingState.DialogState.VaultItemTypeSelection(
|
||||
excludedOptions = persistentListOf(CreateVaultItemType.SSH_KEY),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
composeTestRule
|
||||
@@ -2168,7 +2177,7 @@ class VaultItemListingScreenTest : BaseComposeTest() {
|
||||
verify(exactly = 1) {
|
||||
viewModel.trySendAction(VaultItemListingsAction.DismissDialogClick)
|
||||
viewModel.trySendAction(
|
||||
VaultItemListingsAction.ItemToAddToFolderSelected(
|
||||
VaultItemListingsAction.ItemTypeToAddSelected(
|
||||
CreateVaultItemType.CARD,
|
||||
),
|
||||
)
|
||||
|
||||
+23
-20
@@ -87,6 +87,7 @@ import io.mockk.mockkStatic
|
||||
import io.mockk.runs
|
||||
import io.mockk.unmockkStatic
|
||||
import io.mockk.verify
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.emptyFlow
|
||||
import kotlinx.coroutines.test.runTest
|
||||
@@ -964,7 +965,6 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `AddVaultItemClick inside a folder should show item selection dialog state`() {
|
||||
val viewModel = createVaultItemListingViewModel(
|
||||
@@ -978,8 +978,10 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
itemListingType = VaultItemListingState.ItemListingType.Vault.Folder(
|
||||
folderId = "id",
|
||||
),
|
||||
)
|
||||
.copy(dialogState = VaultItemListingState.DialogState.VaultItemTypeSelection),
|
||||
dialogState = VaultItemListingState.DialogState.VaultItemTypeSelection(
|
||||
excludedOptions = persistentListOf(CreateVaultItemType.SSH_KEY),
|
||||
),
|
||||
),
|
||||
viewModel.stateFlow.value,
|
||||
)
|
||||
}
|
||||
@@ -1008,7 +1010,7 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ItemToAddToFolderSelected sends NavigateToAddFolder for folder selection`() = runTest {
|
||||
fun `ItemTypeToAddSelected sends NavigateToAddFolder for folder selection`() = runTest {
|
||||
val viewModel = createVaultItemListingViewModel(
|
||||
savedStateHandle = createSavedStateHandleWithVaultItemListingType(
|
||||
vaultItemListingType = VaultItemListingType.Folder(""),
|
||||
@@ -1016,7 +1018,7 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
)
|
||||
viewModel.eventFlow.test {
|
||||
viewModel.trySendAction(
|
||||
VaultItemListingsAction.ItemToAddToFolderSelected(
|
||||
VaultItemListingsAction.ItemTypeToAddSelected(
|
||||
itemType = CreateVaultItemType.FOLDER,
|
||||
),
|
||||
)
|
||||
@@ -1030,7 +1032,7 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ItemToAddToFolderSelected sends NavigateToAddFolder for any other selection`() = runTest {
|
||||
fun `ItemTypeToAddSelected sends NavigateToAddFolder for any other selection`() = runTest {
|
||||
val viewModel = createVaultItemListingViewModel(
|
||||
savedStateHandle = createSavedStateHandleWithVaultItemListingType(
|
||||
vaultItemListingType = VaultItemListingType.Folder("id"),
|
||||
@@ -1038,7 +1040,7 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
)
|
||||
viewModel.eventFlow.test {
|
||||
viewModel.trySendAction(
|
||||
VaultItemListingsAction.ItemToAddToFolderSelected(
|
||||
VaultItemListingsAction.ItemTypeToAddSelected(
|
||||
itemType = CreateVaultItemType.CARD,
|
||||
),
|
||||
)
|
||||
@@ -3189,9 +3191,9 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
assertEquals(
|
||||
VaultItemListingState.DialogState.Fido2OperationFail(
|
||||
title = R.string.an_error_has_occurred.asText(),
|
||||
message =
|
||||
R.string.passkey_operation_failed_because_the_selected_item_does_not_exist
|
||||
.asText(),
|
||||
message = R.string
|
||||
.passkey_operation_failed_because_the_selected_item_does_not_exist
|
||||
.asText(),
|
||||
),
|
||||
viewModel.stateFlow.value.dialogState,
|
||||
)
|
||||
@@ -3232,9 +3234,9 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
assertEquals(
|
||||
VaultItemListingState.DialogState.Fido2OperationFail(
|
||||
title = R.string.an_error_has_occurred.asText(),
|
||||
message =
|
||||
R.string.passkey_operation_failed_because_the_selected_item_does_not_exist
|
||||
.asText(),
|
||||
message = R.string
|
||||
.passkey_operation_failed_because_the_selected_item_does_not_exist
|
||||
.asText(),
|
||||
),
|
||||
viewModel.stateFlow.value.dialogState,
|
||||
)
|
||||
@@ -3951,9 +3953,9 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
assertEquals(
|
||||
VaultItemListingState.DialogState.Fido2OperationFail(
|
||||
title = R.string.an_error_has_occurred.asText(),
|
||||
message =
|
||||
R.string.passkey_operation_failed_because_user_verification_attempts_exceeded
|
||||
.asText(),
|
||||
message = R.string
|
||||
.passkey_operation_failed_because_user_verification_attempts_exceeded
|
||||
.asText(),
|
||||
),
|
||||
viewModel.stateFlow.value.dialogState,
|
||||
)
|
||||
@@ -4123,9 +4125,9 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
assertEquals(
|
||||
VaultItemListingState.DialogState.Fido2OperationFail(
|
||||
title = R.string.an_error_has_occurred.asText(),
|
||||
message =
|
||||
R.string.passkey_operation_failed_because_user_verification_attempts_exceeded
|
||||
.asText(),
|
||||
message = R.string
|
||||
.passkey_operation_failed_because_user_verification_attempts_exceeded
|
||||
.asText(),
|
||||
),
|
||||
viewModel.stateFlow.value.dialogState,
|
||||
)
|
||||
@@ -4444,6 +4446,7 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
private fun createVaultItemListingState(
|
||||
itemListingType: VaultItemListingState.ItemListingType = VaultItemListingState.ItemListingType.Vault.Login,
|
||||
viewState: VaultItemListingState.ViewState = VaultItemListingState.ViewState.Loading,
|
||||
dialogState: VaultItemListingState.DialogState? = null,
|
||||
): VaultItemListingState =
|
||||
VaultItemListingState(
|
||||
itemListingType = itemListingType,
|
||||
@@ -4455,7 +4458,7 @@ class VaultItemListingViewModelTest : BaseViewModelTest() {
|
||||
baseIconUrl = environmentRepository.environment.environmentUrlData.baseIconUrl,
|
||||
isIconLoadingDisabled = settingsRepository.isIconLoadingDisabled,
|
||||
isPullToRefreshSettingEnabled = false,
|
||||
dialogState = null,
|
||||
dialogState = dialogState,
|
||||
totpData = null,
|
||||
autofillSelectionData = null,
|
||||
policyDisablesSend = false,
|
||||
|
||||
Reference in New Issue
Block a user