mirror of
https://github.com/bitwarden/android.git
synced 2026-05-28 07:28:29 -05:00
Add initial file chooser (#639)
This commit is contained in:
@@ -24,6 +24,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.asText
|
||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
|
||||
import com.x8bit.bitwarden.ui.tools.feature.send.addsend.model.AddSendType
|
||||
import com.x8bit.bitwarden.ui.util.isEditableText
|
||||
import com.x8bit.bitwarden.ui.util.isProgressBar
|
||||
@@ -44,7 +45,8 @@ class AddSendScreenTest : BaseComposeTest() {
|
||||
|
||||
private var onNavigateBackCalled = false
|
||||
|
||||
private val intentManager: IntentManager = mockk {
|
||||
private val permissionsManager = FakePermissionManager()
|
||||
private val intentManager: IntentManager = mockk(relaxed = true) {
|
||||
every { shareText(any()) } just runs
|
||||
}
|
||||
private val mutableEventFlow = bufferedMutableSharedFlow<AddSendEvent>()
|
||||
@@ -60,6 +62,7 @@ class AddSendScreenTest : BaseComposeTest() {
|
||||
AddSendScreen(
|
||||
viewModel = viewModel,
|
||||
intentManager = intentManager,
|
||||
permissionsManager = permissionsManager,
|
||||
onNavigateBack = { onNavigateBackCalled = true },
|
||||
)
|
||||
}
|
||||
@@ -329,7 +332,8 @@ class AddSendScreenTest : BaseComposeTest() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Choose file button click should send ChooseFileClick`() {
|
||||
fun `Choose file button click with permission should send ChooseFileClick`() {
|
||||
permissionsManager.checkPermissionResult = true
|
||||
mutableStateFlow.value = DEFAULT_STATE.copy(
|
||||
viewState = DEFAULT_VIEW_STATE.copy(
|
||||
selectedType = AddSendState.ViewState.Content.SendType.File,
|
||||
@@ -339,7 +343,32 @@ class AddSendScreenTest : BaseComposeTest() {
|
||||
.onNodeWithText("Choose file")
|
||||
.performScrollTo()
|
||||
.performClick()
|
||||
verify { viewModel.trySendAction(AddSendAction.ChooseFileClick) }
|
||||
verify {
|
||||
viewModel.trySendAction(
|
||||
AddSendAction.ChooseFileClick(isCameraPermissionGranted = true),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `Choose file button click without permission should request permission and send ChooseFileClick`() {
|
||||
permissionsManager.checkPermissionResult = false
|
||||
permissionsManager.getPermissionsResult = false
|
||||
mutableStateFlow.value = DEFAULT_STATE.copy(
|
||||
viewState = DEFAULT_VIEW_STATE.copy(
|
||||
selectedType = AddSendState.ViewState.Content.SendType.File,
|
||||
),
|
||||
)
|
||||
composeTestRule
|
||||
.onNodeWithText("Choose file")
|
||||
.performScrollTo()
|
||||
.performClick()
|
||||
verify {
|
||||
viewModel.trySendAction(
|
||||
AddSendAction.ChooseFileClick(isCameraPermissionGranted = false),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -581,14 +581,21 @@ class AddSendViewModelTest : BaseViewModelTest() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ChooseFileClick should emit ShowToast`() = runTest {
|
||||
fun `FileChose should emit ShowToast`() = runTest {
|
||||
val viewModel = createViewModel()
|
||||
viewModel.eventFlow.test {
|
||||
viewModel.trySendAction(AddSendAction.ChooseFileClick)
|
||||
assertEquals(
|
||||
AddSendEvent.ShowToast("Not Implemented: File Upload".asText()),
|
||||
awaitItem(),
|
||||
)
|
||||
viewModel.trySendAction(AddSendAction.FileChoose(fileData = mockk()))
|
||||
assertEquals(AddSendEvent.ShowToast("Not Yet Implemented".asText()), awaitItem())
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ChooseFileClick should emit ShowToast`() = runTest {
|
||||
val arePermissionsGranted = true
|
||||
val viewModel = createViewModel()
|
||||
viewModel.eventFlow.test {
|
||||
viewModel.trySendAction(AddSendAction.ChooseFileClick(arePermissionsGranted))
|
||||
assertEquals(AddSendEvent.ShowChooserSheet(arePermissionsGranted), awaitItem())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user