mirror of
https://github.com/bitwarden/android.git
synced 2026-06-01 02:06:52 -05:00
Remove edit package (#372)
This commit is contained in:
@@ -1,66 +0,0 @@
|
||||
package com.x8bit.bitwarden.ui.vault.feature.edit
|
||||
|
||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||
import androidx.compose.ui.test.onNodeWithText
|
||||
import androidx.compose.ui.test.performClick
|
||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
||||
class VaultEditItemScreenTest : BaseComposeTest() {
|
||||
|
||||
private var onNavigateBackCalled = false
|
||||
|
||||
private val mutableEventFlow = MutableSharedFlow<VaultEditItemEvent>(
|
||||
extraBufferCapacity = Int.MAX_VALUE,
|
||||
)
|
||||
private val mutableStateFlow = MutableStateFlow(DEFAULT_STATE)
|
||||
private val viewModel = mockk<VaultEditItemViewModel>(relaxed = true) {
|
||||
every { eventFlow } returns mutableEventFlow
|
||||
every { stateFlow } returns mutableStateFlow
|
||||
}
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
composeTestRule.setContent {
|
||||
VaultEditItemScreen(
|
||||
viewModel = viewModel,
|
||||
onNavigateBack = { onNavigateBackCalled = true },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `NavigateBack event should invoke onNavigateBack`() {
|
||||
mutableEventFlow.tryEmit(VaultEditItemEvent.NavigateBack)
|
||||
assertTrue(onNavigateBackCalled)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `on close click should send CloseClick event`() {
|
||||
composeTestRule.onNodeWithContentDescription("Close").performClick()
|
||||
verify(exactly = 1) {
|
||||
viewModel.trySendAction(VaultEditItemAction.CloseClick)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `on save click should send SaveClick event`() {
|
||||
composeTestRule.onNodeWithText("Save").performClick()
|
||||
verify(exactly = 1) {
|
||||
viewModel.trySendAction(VaultEditItemAction.SaveClick)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private const val DEFAULT_VAULT_ITEM_ID: String = "vault_item_id"
|
||||
|
||||
private val DEFAULT_STATE: VaultEditItemState = VaultEditItemState(
|
||||
vaultItemId = DEFAULT_VAULT_ITEM_ID,
|
||||
)
|
||||
@@ -1,61 +0,0 @@
|
||||
package com.x8bit.bitwarden.ui.vault.feature.edit
|
||||
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
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 VaultEditItemViewModelTest : BaseViewModelTest() {
|
||||
|
||||
@Test
|
||||
fun `initial state should be correct when not set`() {
|
||||
val viewModel = createViewModel(state = null)
|
||||
assertEquals(DEFAULT_STATE, viewModel.stateFlow.value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `initial state should be correct when set`() {
|
||||
val differentVaultItemId = "something_different"
|
||||
val state = DEFAULT_STATE.copy(vaultItemId = differentVaultItemId)
|
||||
val viewModel = createViewModel(state = state)
|
||||
|
||||
assertEquals(state, viewModel.stateFlow.value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `on CloseClick should emit NavigateBack`() = runTest {
|
||||
val viewModel = createViewModel()
|
||||
viewModel.eventFlow.test {
|
||||
viewModel.trySendAction(VaultEditItemAction.CloseClick)
|
||||
assertEquals(VaultEditItemEvent.NavigateBack, awaitItem())
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `on SaveClick should emit ShowToast`() = runTest {
|
||||
val viewModel = createViewModel()
|
||||
viewModel.eventFlow.test {
|
||||
viewModel.trySendAction(VaultEditItemAction.SaveClick)
|
||||
assertEquals(VaultEditItemEvent.ShowToast("Not yet implemented".asText()), awaitItem())
|
||||
}
|
||||
}
|
||||
|
||||
private fun createViewModel(
|
||||
state: VaultEditItemState? = DEFAULT_STATE,
|
||||
vaultItemId: String = VAULT_ITEM_ID,
|
||||
): VaultEditItemViewModel = VaultEditItemViewModel(
|
||||
savedStateHandle = SavedStateHandle().apply {
|
||||
set("state", state)
|
||||
set("vault_edit_item_id", vaultItemId)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
private const val VAULT_ITEM_ID: String = "vault_item_id"
|
||||
|
||||
private val DEFAULT_STATE: VaultEditItemState = VaultEditItemState(
|
||||
vaultItemId = VAULT_ITEM_ID,
|
||||
)
|
||||
Reference in New Issue
Block a user