Fix coverage and address PR review comment.
This commit is contained in:
parent
bd2c1c5c6c
commit
e510726359
5 changed files with 43 additions and 13 deletions
|
|
@ -84,7 +84,7 @@ class AttachmentsPreviewPresenter @AssistedInject constructor(
|
||||||
) {
|
) {
|
||||||
val progressCallback = object : ProgressCallback {
|
val progressCallback = object : ProgressCallback {
|
||||||
override fun onProgress(current: Long, total: Long) {
|
override fun onProgress(current: Long, total: Long) {
|
||||||
sendActionState.value = SendActionState.Sending.Uploading(current.toFloat() / total)
|
sendActionState.value = SendActionState.Sending.Uploading(current.toFloat() / total.toFloat())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendActionState.value = SendActionState.Sending.Processing
|
sendActionState.value = SendActionState.Sending.Processing
|
||||||
|
|
|
||||||
|
|
@ -250,7 +250,7 @@ class MessageComposerPresenter @Inject constructor(
|
||||||
) {
|
) {
|
||||||
val progressCallback = object : ProgressCallback {
|
val progressCallback = object : ProgressCallback {
|
||||||
override fun onProgress(current: Long, total: Long) {
|
override fun onProgress(current: Long, total: Long) {
|
||||||
attachmentState.value = AttachmentsState.Sending.Uploading(current.toFloat() / total)
|
attachmentState.value = AttachmentsState.Sending.Uploading(current.toFloat() / total.toFloat())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mediaSender.sendMedia(uri, mimeType, compressIfPossible = false, progressCallback)
|
mediaSender.sendMedia(uri, mimeType, compressIfPossible = false, progressCallback)
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ import io.element.android.features.messages.impl.attachments.preview.Attachments
|
||||||
import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewPresenter
|
import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewPresenter
|
||||||
import io.element.android.features.messages.impl.attachments.preview.SendActionState
|
import io.element.android.features.messages.impl.attachments.preview.SendActionState
|
||||||
import io.element.android.features.messages.impl.media.local.LocalMedia
|
import io.element.android.features.messages.impl.media.local.LocalMedia
|
||||||
import io.element.android.libraries.architecture.Async
|
|
||||||
import io.element.android.libraries.matrix.api.room.MatrixRoom
|
import io.element.android.libraries.matrix.api.room.MatrixRoom
|
||||||
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
|
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
|
||||||
import io.element.android.libraries.mediaupload.api.MediaPreProcessor
|
import io.element.android.libraries.mediaupload.api.MediaPreProcessor
|
||||||
|
|
@ -48,6 +47,13 @@ class AttachmentsPreviewPresenterTest {
|
||||||
@Test
|
@Test
|
||||||
fun `present - send media success scenario`() = runTest {
|
fun `present - send media success scenario`() = runTest {
|
||||||
val room = FakeMatrixRoom()
|
val room = FakeMatrixRoom()
|
||||||
|
room.givenProgressCallbackValues(
|
||||||
|
listOf(
|
||||||
|
Pair(0, 10),
|
||||||
|
Pair(5, 10),
|
||||||
|
Pair(10, 10)
|
||||||
|
)
|
||||||
|
)
|
||||||
val presenter = anAttachmentsPreviewPresenter(room = room)
|
val presenter = anAttachmentsPreviewPresenter(room = room)
|
||||||
moleculeFlow(RecompositionClock.Immediate) {
|
moleculeFlow(RecompositionClock.Immediate) {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
|
|
@ -55,8 +61,10 @@ class AttachmentsPreviewPresenterTest {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.sendActionState).isEqualTo(SendActionState.Idle)
|
assertThat(initialState.sendActionState).isEqualTo(SendActionState.Idle)
|
||||||
initialState.eventSink(AttachmentsPreviewEvents.SendAttachment)
|
initialState.eventSink(AttachmentsPreviewEvents.SendAttachment)
|
||||||
val loadingState = awaitItem()
|
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.Processing)
|
||||||
assertThat(loadingState.sendActionState).isInstanceOf(SendActionState.Sending::class.java)
|
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.Uploading(0f))
|
||||||
|
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.Uploading(0.5f))
|
||||||
|
assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.Uploading(1f))
|
||||||
val successState = awaitItem()
|
val successState = awaitItem()
|
||||||
assertThat(successState.sendActionState).isEqualTo(SendActionState.Done)
|
assertThat(successState.sendActionState).isEqualTo(SendActionState.Done)
|
||||||
assertThat(room.sendMediaCount).isEqualTo(1)
|
assertThat(room.sendMediaCount).isEqualTo(1)
|
||||||
|
|
@ -76,7 +84,7 @@ class AttachmentsPreviewPresenterTest {
|
||||||
assertThat(initialState.sendActionState).isEqualTo(SendActionState.Idle)
|
assertThat(initialState.sendActionState).isEqualTo(SendActionState.Idle)
|
||||||
initialState.eventSink(AttachmentsPreviewEvents.SendAttachment)
|
initialState.eventSink(AttachmentsPreviewEvents.SendAttachment)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
assertThat(loadingState.sendActionState).isInstanceOf(SendActionState.Sending::class.java)
|
assertThat(loadingState.sendActionState).isEqualTo(SendActionState.Sending.Processing)
|
||||||
val failureState = awaitItem()
|
val failureState = awaitItem()
|
||||||
assertThat(failureState.sendActionState).isEqualTo((SendActionState.Failure(failure)))
|
assertThat(failureState.sendActionState).isEqualTo((SendActionState.Failure(failure)))
|
||||||
assertThat(room.sendMediaCount).isEqualTo(0)
|
assertThat(room.sendMediaCount).isEqualTo(0)
|
||||||
|
|
|
||||||
|
|
@ -368,6 +368,13 @@ class MessageComposerPresenterTest {
|
||||||
@Test
|
@Test
|
||||||
fun `present - Pick file from storage`() = runTest {
|
fun `present - Pick file from storage`() = runTest {
|
||||||
val room = FakeMatrixRoom()
|
val room = FakeMatrixRoom()
|
||||||
|
room.givenProgressCallbackValues(
|
||||||
|
listOf(
|
||||||
|
Pair(0, 10),
|
||||||
|
Pair(5, 10),
|
||||||
|
Pair(10, 10)
|
||||||
|
)
|
||||||
|
)
|
||||||
val presenter = createPresenter(this, room = room)
|
val presenter = createPresenter(this, room = room)
|
||||||
moleculeFlow(RecompositionClock.Immediate) {
|
moleculeFlow(RecompositionClock.Immediate) {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
|
|
@ -376,7 +383,10 @@ class MessageComposerPresenterTest {
|
||||||
initialState.eventSink(MessageComposerEvents.PickAttachmentSource.FromFiles)
|
initialState.eventSink(MessageComposerEvents.PickAttachmentSource.FromFiles)
|
||||||
val sendingState = awaitItem()
|
val sendingState = awaitItem()
|
||||||
assertThat(sendingState.showAttachmentSourcePicker).isFalse()
|
assertThat(sendingState.showAttachmentSourcePicker).isFalse()
|
||||||
assertThat(sendingState.attachmentsState).isInstanceOf(AttachmentsState.Sending::class.java)
|
assertThat(sendingState.attachmentsState).isInstanceOf(AttachmentsState.Sending.Processing::class.java)
|
||||||
|
assertThat(awaitItem().attachmentsState).isEqualTo(AttachmentsState.Sending.Uploading(0f))
|
||||||
|
assertThat(awaitItem().attachmentsState).isEqualTo(AttachmentsState.Sending.Uploading(0.5f))
|
||||||
|
assertThat(awaitItem().attachmentsState).isEqualTo(AttachmentsState.Sending.Uploading(1f))
|
||||||
val sentState = awaitItem()
|
val sentState = awaitItem()
|
||||||
assertThat(sentState.attachmentsState).isEqualTo(AttachmentsState.None)
|
assertThat(sentState.attachmentsState).isEqualTo(AttachmentsState.None)
|
||||||
assertThat(room.sendMediaCount).isEqualTo(1)
|
assertThat(room.sendMediaCount).isEqualTo(1)
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID
|
||||||
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
||||||
import io.element.android.libraries.matrix.test.timeline.FakeMatrixTimeline
|
import io.element.android.libraries.matrix.test.timeline.FakeMatrixTimeline
|
||||||
import io.element.android.tests.testutils.simulateLongTask
|
import io.element.android.tests.testutils.simulateLongTask
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
@ -77,6 +78,7 @@ class FakeMatrixRoom(
|
||||||
private var forwardEventResult = Result.success(Unit)
|
private var forwardEventResult = Result.success(Unit)
|
||||||
private var reportContentResult = Result.success(Unit)
|
private var reportContentResult = Result.success(Unit)
|
||||||
private var sendLocationResult = Result.success(Unit)
|
private var sendLocationResult = Result.success(Unit)
|
||||||
|
private var progressCallbackValues = emptyList<Pair<Long, Long>>()
|
||||||
|
|
||||||
var sendMediaCount = 0
|
var sendMediaCount = 0
|
||||||
private set
|
private set
|
||||||
|
|
@ -151,7 +153,7 @@ class FakeMatrixRoom(
|
||||||
return toggleReactionResult
|
return toggleReactionResult
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_myReactions.contains(emoji)) {
|
if (_myReactions.contains(emoji)) {
|
||||||
_myReactions.remove(emoji)
|
_myReactions.remove(emoji)
|
||||||
} else {
|
} else {
|
||||||
_myReactions.add(emoji)
|
_myReactions.add(emoji)
|
||||||
|
|
@ -228,20 +230,26 @@ class FakeMatrixRoom(
|
||||||
thumbnailFile: File,
|
thumbnailFile: File,
|
||||||
imageInfo: ImageInfo,
|
imageInfo: ImageInfo,
|
||||||
progressCallback: ProgressCallback?
|
progressCallback: ProgressCallback?
|
||||||
): Result<Unit> = fakeSendMedia()
|
): Result<Unit> = fakeSendMedia(progressCallback)
|
||||||
|
|
||||||
override suspend fun sendVideo(file: File, thumbnailFile: File, videoInfo: VideoInfo, progressCallback: ProgressCallback?): Result<Unit> = fakeSendMedia()
|
override suspend fun sendVideo(file: File, thumbnailFile: File, videoInfo: VideoInfo, progressCallback: ProgressCallback?): Result<Unit> = fakeSendMedia(
|
||||||
|
progressCallback
|
||||||
|
)
|
||||||
|
|
||||||
override suspend fun sendAudio(file: File, audioInfo: AudioInfo, progressCallback: ProgressCallback?): Result<Unit> = fakeSendMedia()
|
override suspend fun sendAudio(file: File, audioInfo: AudioInfo, progressCallback: ProgressCallback?): Result<Unit> = fakeSendMedia(progressCallback)
|
||||||
|
|
||||||
override suspend fun sendFile(file: File, fileInfo: FileInfo, progressCallback: ProgressCallback?): Result<Unit> = fakeSendMedia()
|
override suspend fun sendFile(file: File, fileInfo: FileInfo, progressCallback: ProgressCallback?): Result<Unit> = fakeSendMedia(progressCallback)
|
||||||
|
|
||||||
override suspend fun forwardEvent(eventId: EventId, rooms: List<RoomId>): Result<Unit> = simulateLongTask {
|
override suspend fun forwardEvent(eventId: EventId, rooms: List<RoomId>): Result<Unit> = simulateLongTask {
|
||||||
forwardEventResult
|
forwardEventResult
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun fakeSendMedia(): Result<Unit> = simulateLongTask {
|
private suspend fun fakeSendMedia(progressCallback: ProgressCallback?): Result<Unit> = simulateLongTask {
|
||||||
sendMediaResult.onSuccess {
|
sendMediaResult.onSuccess {
|
||||||
|
progressCallbackValues.forEach { (current, total) ->
|
||||||
|
progressCallback?.onProgress(current, total)
|
||||||
|
delay(1)
|
||||||
|
}
|
||||||
sendMediaCount++
|
sendMediaCount++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -380,4 +388,8 @@ class FakeMatrixRoom(
|
||||||
fun givenSendLocationResult(result: Result<Unit>) {
|
fun givenSendLocationResult(result: Result<Unit>) {
|
||||||
sendLocationResult = result
|
sendLocationResult = result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun givenProgressCallbackValues(values: List<Pair<Long, Long>>) {
|
||||||
|
progressCallbackValues = values
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue