Adding in tests for the custom type fields (#398)

This commit is contained in:
Oleg Semenenko
2023-12-15 12:17:29 -06:00
committed by Álison Fernandes
parent 5235310de5
commit 6f85d80f9f
7 changed files with 1183 additions and 99 deletions

View File

@@ -15,9 +15,9 @@ import com.x8bit.bitwarden.ui.platform.base.BaseViewModel
import com.x8bit.bitwarden.ui.platform.base.util.Text
import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.platform.base.util.concat
import com.x8bit.bitwarden.ui.vault.feature.additem.VaultAddItemAction.ItemType.SecureNotesType.TooltipClick.toCustomField
import com.x8bit.bitwarden.ui.vault.feature.additem.model.CustomFieldType
import com.x8bit.bitwarden.ui.vault.feature.additem.util.toViewState
import com.x8bit.bitwarden.ui.vault.feature.additem.model.toCustomField
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toCipherView
import com.x8bit.bitwarden.ui.vault.model.VaultAddEditType
import com.x8bit.bitwarden.ui.vault.model.VaultLinkedFieldType
@@ -29,7 +29,6 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
import java.util.UUID
import javax.inject.Inject
private const val KEY_STATE = "state"
@@ -1320,43 +1319,4 @@ sealed class VaultAddItemAction {
val updateCipherResult: UpdateCipherResult,
) : Internal()
}
/**
* An extension function for adding custom field types.
*/
fun CustomFieldType.toCustomField(name: String): VaultAddItemState.Custom {
return when (this) {
CustomFieldType.BOOLEAN -> {
VaultAddItemState.Custom.BooleanField(
itemId = UUID.randomUUID().toString(),
name = name,
value = false,
)
}
CustomFieldType.LINKED -> {
VaultAddItemState.Custom.LinkedField(
itemId = UUID.randomUUID().toString(),
name = name,
vaultLinkedFieldType = VaultLinkedFieldType.USERNAME,
)
}
CustomFieldType.HIDDEN -> {
VaultAddItemState.Custom.HiddenField(
itemId = UUID.randomUUID().toString(),
name = name,
value = "",
)
}
CustomFieldType.TEXT -> {
VaultAddItemState.Custom.TextField(
itemId = UUID.randomUUID().toString(),
name = name,
value = "",
)
}
}
}
}

View File

@@ -3,6 +3,9 @@ package com.x8bit.bitwarden.ui.vault.feature.additem.model
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.Text
import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.vault.feature.additem.VaultAddItemState
import com.x8bit.bitwarden.ui.vault.model.VaultLinkedFieldType
import java.util.UUID
/**
* The Enum representing the Custom Field type that is being added by the user.
@@ -13,3 +16,44 @@ enum class CustomFieldType(val typeText: Text) {
BOOLEAN(R.string.field_type_boolean.asText()),
TEXT(R.string.field_type_text.asText()),
}
/**
* A function that converts [CustomFieldType] and a string to [VaultAddItemState.Custom].
*/
fun CustomFieldType.toCustomField(
name: String,
): VaultAddItemState.Custom {
return when (this) {
CustomFieldType.BOOLEAN -> {
VaultAddItemState.Custom.BooleanField(
itemId = UUID.randomUUID().toString(),
name = name,
value = false,
)
}
CustomFieldType.LINKED -> {
VaultAddItemState.Custom.LinkedField(
itemId = UUID.randomUUID().toString(),
name = name,
vaultLinkedFieldType = VaultLinkedFieldType.USERNAME,
)
}
CustomFieldType.HIDDEN -> {
VaultAddItemState.Custom.HiddenField(
itemId = UUID.randomUUID().toString(),
name = name,
value = "",
)
}
CustomFieldType.TEXT -> {
VaultAddItemState.Custom.TextField(
itemId = UUID.randomUUID().toString(),
name = name,
value = "",
)
}
}
}