Add navigation support for editing a send (#558)

This commit is contained in:
David Perez authored and Álison Fernandes committed 2024-06-20 17:08:07 +01:00
1 parent 49411f3e2f
commit 8d45a650c3
16 files changed
+184 -38

No files matched your search

@@ -43,6 +43,7 @@ class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
onNavigateToVaultItem = {},
onNavigateToVaultEditItem = {},
onNavigateToAddSend = {},
onNavigateToEditSend = {},
onNavigateToDeleteAccount = {},
onNavigateToFolders = {},
onNavigateToPasswordHistory = {},
@@ -31,6 +31,7 @@ import io.mockk.runs
import io.mockk.verify
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
@@ -38,6 +39,7 @@ import org.junit.Test
class SendScreenTest : BaseComposeTest() {
private var onNavigateToNewSendCalled = false
private var onNavigateToEditSendId: String? = null
private val intentHandler = mockk<IntentHandler> {
every { launchUri(any()) } just runs
@@ -56,6 +58,7 @@ class SendScreenTest : BaseComposeTest() {
SendScreen(
viewModel = viewModel,
onNavigateToAddSend = { onNavigateToNewSendCalled = true },
onNavigateToEditSend = { onNavigateToEditSendId = it },
intentHandler = intentHandler,
)
}
@@ -67,6 +70,13 @@ class SendScreenTest : BaseComposeTest() {
assertTrue(onNavigateToNewSendCalled)
}
@Test
fun `on NavigateToEditSend should call onNavigateToEditSend`() {
val sendId = "sendId1234"
mutableEventFlow.tryEmit(SendEvent.NavigateToEditSend(sendId))
assertEquals(sendId, onNavigateToEditSendId)
}
@Test
fun `on NavigateToAboutSend should call launchUri on intentHandler`() {
mutableEventFlow.tryEmit(SendEvent.NavigateToAboutSend)
@@ -142,12 +142,16 @@ class SendViewModelTest : BaseViewModelTest() {
}
@Test
fun `SendClick should emit ShowToast`() = runTest {
fun `SendClick should emit NavigateToEditSend`() = runTest {
val sendId = "sendId1234"
val sendItem = mockk<SendState.ViewState.Content.SendItem> {
every { id } returns sendId
}
val viewModel = createViewModel()
val sendItem = mockk<SendState.ViewState.Content.SendItem>()
viewModel.eventFlow.test {
viewModel.trySendAction(SendAction.SendClick(sendItem))
assertEquals(SendEvent.ShowToast("Not yet implemented".asText()), awaitItem())
assertEquals(SendEvent.NavigateToEditSend(sendId), awaitItem())
}
}
@@ -19,6 +19,7 @@ import com.x8bit.bitwarden.data.platform.repository.util.bufferedMutableSharedFl
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
import com.x8bit.bitwarden.ui.platform.base.util.IntentHandler
import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.tools.feature.send.addsend.model.AddSendType
import com.x8bit.bitwarden.ui.util.isProgressBar
import io.mockk.every
import io.mockk.just
@@ -596,6 +597,7 @@ class AddSendScreenTest : BaseComposeTest() {
)
private val DEFAULT_STATE = AddSendState(
addSendType = AddSendType.AddItem,
viewState = DEFAULT_VIEW_STATE,
dialogState = null,
isPremiumUser = false,
@@ -12,6 +12,7 @@ import com.x8bit.bitwarden.data.vault.repository.VaultRepository
import com.x8bit.bitwarden.data.vault.repository.model.CreateSendResult
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.tools.feature.send.addsend.model.AddSendType
import com.x8bit.bitwarden.ui.tools.feature.send.addsend.util.toSendView
import com.x8bit.bitwarden.ui.tools.feature.send.util.toSendUrl
import io.mockk.coEvery
@@ -394,8 +395,19 @@ class AddSendViewModelTest : BaseViewModelTest() {
private fun createViewModel(
state: AddSendState? = null,
addSendType: AddSendType = AddSendType.AddItem,
): AddSendViewModel = AddSendViewModel(
savedStateHandle = SavedStateHandle().apply { set("state", state) },
savedStateHandle = SavedStateHandle().apply {
set("state", state)
set(
"add_send_item_type",
when (addSendType) {
AddSendType.AddItem -> "add"
is AddSendType.EditItem -> "edit"
},
)
set("edit_send_id", (addSendType as? AddSendType.EditItem)?.sendItemId)
},
authRepo = authRepository,
environmentRepo = environmentRepository,
clock = clock,
@@ -432,6 +444,7 @@ class AddSendViewModelTest : BaseViewModelTest() {
private const val DEFAULT_ENVIRONMENT_URL = "https://vault.bitwarden.com/#/send/"
private val DEFAULT_STATE = AddSendState(
addSendType = AddSendType.AddItem,
viewState = DEFAULT_VIEW_STATE,
dialogState = null,
isPremiumUser = false,