|
|
@ -14,8 +14,6 @@ |
|
|
|
* limitations under the License. |
|
|
|
* limitations under the License. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
@file:OptIn(ExperimentalCoroutinesApi::class) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package io.element.android.features.messages.textcomposer |
|
|
|
package io.element.android.features.messages.textcomposer |
|
|
|
|
|
|
|
|
|
|
|
import app.cash.molecule.RecompositionClock |
|
|
|
import app.cash.molecule.RecompositionClock |
|
|
@ -52,14 +50,9 @@ import io.element.android.libraries.mediaupload.test.FakeMediaPreProcessor |
|
|
|
import io.element.android.libraries.textcomposer.MessageComposerMode |
|
|
|
import io.element.android.libraries.textcomposer.MessageComposerMode |
|
|
|
import io.mockk.mockk |
|
|
|
import io.mockk.mockk |
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
import kotlinx.coroutines.Dispatchers |
|
|
|
|
|
|
|
import kotlinx.coroutines.ExperimentalCoroutinesApi |
|
|
|
|
|
|
|
import kotlinx.coroutines.android.awaitFrame |
|
|
|
|
|
|
|
import kotlinx.coroutines.delay |
|
|
|
|
|
|
|
import kotlinx.coroutines.runBlocking |
|
|
|
import kotlinx.coroutines.runBlocking |
|
|
|
import kotlinx.coroutines.test.runCurrent |
|
|
|
import kotlinx.coroutines.test.runCurrent |
|
|
|
import kotlinx.coroutines.test.runTest |
|
|
|
import kotlinx.coroutines.test.runTest |
|
|
|
import kotlinx.coroutines.test.setMain |
|
|
|
|
|
|
|
import org.junit.Test |
|
|
|
import org.junit.Test |
|
|
|
import java.io.File |
|
|
|
import java.io.File |
|
|
|
|
|
|
|
|
|
|
@ -302,30 +295,32 @@ class MessageComposerPresenterTest { |
|
|
|
val room = FakeMatrixRoom() |
|
|
|
val room = FakeMatrixRoom() |
|
|
|
val presenter = createPresenter(this, room = room) |
|
|
|
val presenter = createPresenter(this, room = room) |
|
|
|
pickerProvider.givenMimeType(MimeTypes.Images) |
|
|
|
pickerProvider.givenMimeType(MimeTypes.Images) |
|
|
|
mediaPreProcessor.givenResult(Result.success( |
|
|
|
mediaPreProcessor.givenResult( |
|
|
|
MediaUploadInfo.Image( |
|
|
|
Result.success( |
|
|
|
file = File("/some/path"), |
|
|
|
MediaUploadInfo.Image( |
|
|
|
info = ImageInfo( |
|
|
|
|
|
|
|
width = null, |
|
|
|
|
|
|
|
height = null, |
|
|
|
|
|
|
|
mimetype = null, |
|
|
|
|
|
|
|
size = null, |
|
|
|
|
|
|
|
thumbnailInfo = null, |
|
|
|
|
|
|
|
thumbnailUrl = null, |
|
|
|
|
|
|
|
blurhash = null, |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
thumbnailInfo = ThumbnailProcessingInfo( |
|
|
|
|
|
|
|
file = File("/some/path"), |
|
|
|
file = File("/some/path"), |
|
|
|
info = ThumbnailInfo( |
|
|
|
info = ImageInfo( |
|
|
|
width = null, |
|
|
|
width = null, |
|
|
|
height = null, |
|
|
|
height = null, |
|
|
|
mimetype = null, |
|
|
|
mimetype = null, |
|
|
|
size = null, |
|
|
|
size = null, |
|
|
|
|
|
|
|
thumbnailInfo = null, |
|
|
|
|
|
|
|
thumbnailUrl = null, |
|
|
|
|
|
|
|
blurhash = null, |
|
|
|
), |
|
|
|
), |
|
|
|
blurhash = "", |
|
|
|
thumbnailInfo = ThumbnailProcessingInfo( |
|
|
|
|
|
|
|
file = File("/some/path"), |
|
|
|
|
|
|
|
info = ThumbnailInfo( |
|
|
|
|
|
|
|
width = null, |
|
|
|
|
|
|
|
height = null, |
|
|
|
|
|
|
|
mimetype = null, |
|
|
|
|
|
|
|
size = null, |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
blurhash = "", |
|
|
|
|
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
)) |
|
|
|
) |
|
|
|
moleculeFlow(RecompositionClock.Immediate) { |
|
|
|
moleculeFlow(RecompositionClock.Immediate) { |
|
|
|
presenter.present() |
|
|
|
presenter.present() |
|
|
|
}.test { |
|
|
|
}.test { |
|
|
@ -342,31 +337,33 @@ class MessageComposerPresenterTest { |
|
|
|
val room = FakeMatrixRoom() |
|
|
|
val room = FakeMatrixRoom() |
|
|
|
val presenter = createPresenter(this, room = room) |
|
|
|
val presenter = createPresenter(this, room = room) |
|
|
|
pickerProvider.givenMimeType(MimeTypes.Videos) |
|
|
|
pickerProvider.givenMimeType(MimeTypes.Videos) |
|
|
|
mediaPreProcessor.givenResult(Result.success( |
|
|
|
mediaPreProcessor.givenResult( |
|
|
|
MediaUploadInfo.Video( |
|
|
|
Result.success( |
|
|
|
file = File("/some/path"), |
|
|
|
MediaUploadInfo.Video( |
|
|
|
info = VideoInfo( |
|
|
|
|
|
|
|
width = null, |
|
|
|
|
|
|
|
height = null, |
|
|
|
|
|
|
|
mimetype = null, |
|
|
|
|
|
|
|
duration = null, |
|
|
|
|
|
|
|
size = null, |
|
|
|
|
|
|
|
thumbnailInfo = null, |
|
|
|
|
|
|
|
thumbnailUrl = null, |
|
|
|
|
|
|
|
blurhash = null, |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
thumbnailInfo = ThumbnailProcessingInfo( |
|
|
|
|
|
|
|
file = File("/some/path"), |
|
|
|
file = File("/some/path"), |
|
|
|
info = ThumbnailInfo( |
|
|
|
info = VideoInfo( |
|
|
|
width = null, |
|
|
|
width = null, |
|
|
|
height = null, |
|
|
|
height = null, |
|
|
|
mimetype = null, |
|
|
|
mimetype = null, |
|
|
|
|
|
|
|
duration = null, |
|
|
|
size = null, |
|
|
|
size = null, |
|
|
|
|
|
|
|
thumbnailInfo = null, |
|
|
|
|
|
|
|
thumbnailUrl = null, |
|
|
|
|
|
|
|
blurhash = null, |
|
|
|
), |
|
|
|
), |
|
|
|
blurhash = "", |
|
|
|
thumbnailInfo = ThumbnailProcessingInfo( |
|
|
|
|
|
|
|
file = File("/some/path"), |
|
|
|
|
|
|
|
info = ThumbnailInfo( |
|
|
|
|
|
|
|
width = null, |
|
|
|
|
|
|
|
height = null, |
|
|
|
|
|
|
|
mimetype = null, |
|
|
|
|
|
|
|
size = null, |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
blurhash = "", |
|
|
|
|
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
)) |
|
|
|
) |
|
|
|
moleculeFlow(RecompositionClock.Immediate) { |
|
|
|
moleculeFlow(RecompositionClock.Immediate) { |
|
|
|
presenter.present() |
|
|
|
presenter.present() |
|
|
|
}.test { |
|
|
|
}.test { |
|
|
@ -394,7 +391,7 @@ class MessageComposerPresenterTest { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
fun `present - Pick media from gallery & cancel does nothing`() = runTest { |
|
|
|
fun `present - Pick media from gallery & cancel does nothing`() = runTest { |
|
|
|
val presenter = createPresenter(this) |
|
|
|
val presenter = createPresenter(this) |
|
|
|
with(pickerProvider){ |
|
|
|
with(pickerProvider) { |
|
|
|
givenResult(null) // Simulate a user canceling the flow |
|
|
|
givenResult(null) // Simulate a user canceling the flow |
|
|
|
givenMimeType(MimeTypes.Images) |
|
|
|
givenMimeType(MimeTypes.Images) |
|
|
|
} |
|
|
|
} |
|
|
|