BIT-143: Add initial bottom navigation screen (#25)

Co-authored-by: Brian Yencho <brian@livefront.com>
This commit is contained in:
Ramsey Smith
2023-09-05 14:44:50 -06:00
committed by GitHub
parent ee77052739
commit 3bed69bc45
16 changed files with 666 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
package com.x8bit.bitwarden.example.ui.feature.vaultunlockednavbar
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import com.x8bit.bitwarden.example.ui.BaseComposeTest
import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.VaultUnlockedNavBarAction
import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.VaultUnlockedNavBarScreen
import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.VaultUnlockedNavBarViewModel
import io.mockk.mockk
import io.mockk.verify
import org.junit.Test
class VaultUnlockedNavBarScreenTest : BaseComposeTest() {
@Test
fun `vault tab click should send VaultTabClick action`() {
val viewModel = mockk<VaultUnlockedNavBarViewModel>(relaxed = true)
composeTestRule.apply {
setContent {
VaultUnlockedNavBarScreen(
viewModel = viewModel,
)
}
onNodeWithTag("vault").performClick()
}
verify { viewModel.trySendAction(VaultUnlockedNavBarAction.VaultTabClick) }
}
@Test
fun `send tab click should send SendTabClick action`() {
val viewModel = mockk<VaultUnlockedNavBarViewModel>(relaxed = true)
composeTestRule.apply {
setContent {
VaultUnlockedNavBarScreen(
viewModel = viewModel,
)
}
onNodeWithTag("send").performClick()
}
verify { viewModel.trySendAction(VaultUnlockedNavBarAction.SendTabClick) }
}
@Test
fun `generator tab click should send GeneratorTabClick action`() {
val viewModel = mockk<VaultUnlockedNavBarViewModel>(relaxed = true)
composeTestRule.apply {
setContent {
VaultUnlockedNavBarScreen(
viewModel = viewModel,
)
}
onNodeWithTag("generator").performClick()
}
verify { viewModel.trySendAction(VaultUnlockedNavBarAction.GeneratorTabClick) }
}
@Test
fun `settings tab click should send SendTabClick action`() {
val viewModel = mockk<VaultUnlockedNavBarViewModel>(relaxed = true)
composeTestRule.apply {
setContent {
VaultUnlockedNavBarScreen(
viewModel = viewModel,
)
}
onNodeWithTag("settings").performClick()
}
verify { viewModel.trySendAction(VaultUnlockedNavBarAction.SettingsTabClick) }
}
}

View File

@@ -0,0 +1,48 @@
package com.x8bit.bitwarden.example.ui.feature.vaultunlockednavbar
import app.cash.turbine.test
import com.x8bit.bitwarden.example.ui.BaseViewModelTest
import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.VaultUnlockedNavBarAction
import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.VaultUnlockedNavBarEvent
import com.x8bit.bitwarden.ui.platform.feature.vaultunlockednavbar.VaultUnlockedNavBarViewModel
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
class VaultUnlockedNavBarViewModelTest : BaseViewModelTest() {
@Test
fun `VaultTabClick should navigate to the vault screen`() = runTest {
val viewModel = VaultUnlockedNavBarViewModel()
viewModel.eventFlow.test {
viewModel.trySendAction(VaultUnlockedNavBarAction.VaultTabClick)
assertEquals(VaultUnlockedNavBarEvent.NavigateToVaultScreenNavBar, awaitItem())
}
}
@Test
fun `SendTabClick should navigate to the send screen`() = runTest {
val viewModel = VaultUnlockedNavBarViewModel()
viewModel.eventFlow.test {
viewModel.trySendAction(VaultUnlockedNavBarAction.SendTabClick)
assertEquals(VaultUnlockedNavBarEvent.NavigateToSendScreen, awaitItem())
}
}
@Test
fun `GeneratorTabClick should navigate to the generator screen`() = runTest {
val viewModel = VaultUnlockedNavBarViewModel()
viewModel.eventFlow.test {
viewModel.actionChannel.trySend(VaultUnlockedNavBarAction.GeneratorTabClick)
assertEquals(VaultUnlockedNavBarEvent.NavigateToGeneratorScreen, awaitItem())
}
}
@Test
fun `SettingsTabClick should navigate to the settings screen`() = runTest {
val viewModel = VaultUnlockedNavBarViewModel()
viewModel.eventFlow.test {
viewModel.actionChannel.trySend(VaultUnlockedNavBarAction.SettingsTabClick)
assertEquals(VaultUnlockedNavBarEvent.NavigateToSettingsScreen, awaitItem())
}
}
}