Media: make tests passing again
This commit is contained in:
parent
68e6fc3afa
commit
80b918b273
8 changed files with 40 additions and 25 deletions
|
|
@ -18,6 +18,7 @@ package io.element.android.features.messages.impl.media.local
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import androidx.core.net.toUri
|
||||||
import com.squareup.anvil.annotations.ContributesBinding
|
import com.squareup.anvil.annotations.ContributesBinding
|
||||||
import io.element.android.features.messages.impl.timeline.util.FileSizeFormatter
|
import io.element.android.features.messages.impl.timeline.util.FileSizeFormatter
|
||||||
import io.element.android.libraries.androidutils.file.getFileName
|
import io.element.android.libraries.androidutils.file.getFileName
|
||||||
|
|
@ -26,6 +27,8 @@ import io.element.android.libraries.androidutils.file.getMimeType
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes
|
import io.element.android.libraries.core.mimetype.MimeTypes
|
||||||
import io.element.android.libraries.di.AppScope
|
import io.element.android.libraries.di.AppScope
|
||||||
import io.element.android.libraries.di.ApplicationContext
|
import io.element.android.libraries.di.ApplicationContext
|
||||||
|
import io.element.android.libraries.matrix.api.media.MediaFile
|
||||||
|
import io.element.android.libraries.matrix.api.media.toFile
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ContributesBinding(AppScope::class)
|
@ContributesBinding(AppScope::class)
|
||||||
|
|
@ -34,6 +37,16 @@ class AndroidLocalMediaFactory @Inject constructor(
|
||||||
private val fileSizeFormatter: FileSizeFormatter,
|
private val fileSizeFormatter: FileSizeFormatter,
|
||||||
) : LocalMediaFactory {
|
) : LocalMediaFactory {
|
||||||
|
|
||||||
|
override fun createFromMediaFile(mediaFile: MediaFile, mediaInfo: MediaInfo): LocalMedia {
|
||||||
|
val uri = mediaFile.toFile().toUri()
|
||||||
|
return createFromUri(
|
||||||
|
uri = uri,
|
||||||
|
mimeType = mediaInfo.mimeType,
|
||||||
|
name = mediaInfo.name,
|
||||||
|
formattedFileSize = mediaInfo.formattedFileSize
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
override fun createFromUri(
|
override fun createFromUri(
|
||||||
uri: Uri,
|
uri: Uri,
|
||||||
mimeType: String?,
|
mimeType: String?,
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,18 @@
|
||||||
package io.element.android.features.messages.impl.media.local
|
package io.element.android.features.messages.impl.media.local
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.core.net.toUri
|
|
||||||
import io.element.android.libraries.matrix.api.media.MediaFile
|
import io.element.android.libraries.matrix.api.media.MediaFile
|
||||||
import io.element.android.libraries.matrix.api.media.toFile
|
|
||||||
|
|
||||||
interface LocalMediaFactory {
|
interface LocalMediaFactory {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will create a [LocalMedia] with the given [MediaFile] and [MediaInfo]
|
||||||
|
*/
|
||||||
|
fun createFromMediaFile(
|
||||||
|
mediaFile: MediaFile,
|
||||||
|
mediaInfo: MediaInfo,
|
||||||
|
): LocalMedia
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will create a [LocalMedia] with the given mimeType, name and formattedFileSize
|
* This method will create a [LocalMedia] with the given mimeType, name and formattedFileSize
|
||||||
* If any of those params are null, it'll try to read them from the content.
|
* If any of those params are null, it'll try to read them from the content.
|
||||||
|
|
@ -34,11 +40,3 @@ interface LocalMediaFactory {
|
||||||
formattedFileSize: String?
|
formattedFileSize: String?
|
||||||
): LocalMedia
|
): LocalMedia
|
||||||
}
|
}
|
||||||
|
|
||||||
fun LocalMediaFactory.createFromMediaFile(
|
|
||||||
mediaFile: MediaFile,
|
|
||||||
mediaInfo: MediaInfo,
|
|
||||||
): LocalMedia {
|
|
||||||
val uri = mediaFile.toFile().toUri()
|
|
||||||
return createFromUri(uri = uri, mimeType = mediaInfo.mimeType, name = mediaInfo.name, formattedFileSize = mediaInfo.formattedFileSize)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ data class MediaInfo(
|
||||||
val formattedFileSize: String,
|
val formattedFileSize: String,
|
||||||
) : Parcelable
|
) : Parcelable
|
||||||
|
|
||||||
|
|
||||||
fun anImageInfo(): MediaInfo = MediaInfo(
|
fun anImageInfo(): MediaInfo = MediaInfo(
|
||||||
"an image file", MimeTypes.Jpeg, "4MB"
|
"an image file", MimeTypes.Jpeg, "4MB"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@ import dagger.assisted.AssistedInject
|
||||||
import io.element.android.features.messages.impl.media.local.LocalMedia
|
import io.element.android.features.messages.impl.media.local.LocalMedia
|
||||||
import io.element.android.features.messages.impl.media.local.LocalMediaActions
|
import io.element.android.features.messages.impl.media.local.LocalMediaActions
|
||||||
import io.element.android.features.messages.impl.media.local.LocalMediaFactory
|
import io.element.android.features.messages.impl.media.local.LocalMediaFactory
|
||||||
import io.element.android.features.messages.impl.media.local.createFromMediaFile
|
|
||||||
import io.element.android.libraries.architecture.Async
|
import io.element.android.libraries.architecture.Async
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.designsystem.utils.SnackbarDispatcher
|
import io.element.android.libraries.designsystem.utils.SnackbarDispatcher
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,6 @@ class AttachmentsPreviewPresenterTest {
|
||||||
private fun anAttachmentsPreviewPresenter(
|
private fun anAttachmentsPreviewPresenter(
|
||||||
localMedia: LocalMedia = aLocalMedia(
|
localMedia: LocalMedia = aLocalMedia(
|
||||||
uri = mockMediaUrl,
|
uri = mockMediaUrl,
|
||||||
mimeType = MimeTypes.IMAGE_JPEG
|
|
||||||
),
|
),
|
||||||
room: MatrixRoom = FakeMatrixRoom()
|
room: MatrixRoom = FakeMatrixRoom()
|
||||||
): AttachmentsPreviewPresenter {
|
): AttachmentsPreviewPresenter {
|
||||||
|
|
|
||||||
|
|
@ -17,23 +17,18 @@
|
||||||
package io.element.android.features.messages.fixtures
|
package io.element.android.features.messages.fixtures
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.media3.common.MimeTypes
|
|
||||||
import io.element.android.features.messages.impl.attachments.Attachment
|
import io.element.android.features.messages.impl.attachments.Attachment
|
||||||
import io.element.android.features.messages.impl.media.local.LocalMedia
|
import io.element.android.features.messages.impl.media.local.LocalMedia
|
||||||
import io.element.android.features.messages.impl.media.local.MediaInfo
|
import io.element.android.features.messages.impl.media.local.MediaInfo
|
||||||
|
import io.element.android.features.messages.impl.media.local.anImageInfo
|
||||||
|
import io.element.android.libraries.core.mimetype.MimeTypes
|
||||||
|
|
||||||
fun aLocalMedia(
|
fun aLocalMedia(
|
||||||
uri: Uri,
|
uri: Uri,
|
||||||
mimeType: String = MimeTypes.IMAGE_JPEG,
|
mediaInfo: MediaInfo = anImageInfo(),
|
||||||
name: String = "a media",
|
|
||||||
size: Long = 1000,
|
|
||||||
) = LocalMedia(
|
) = LocalMedia(
|
||||||
uri = uri,
|
uri = uri,
|
||||||
info = MediaInfo(
|
info = mediaInfo
|
||||||
mimeType = mimeType,
|
|
||||||
name = name,
|
|
||||||
formattedFileSize = "${size}B",
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
fun aMediaAttachment(localMedia: LocalMedia, compressIfPossible: Boolean = true) = Attachment.Media(
|
fun aMediaAttachment(localMedia: LocalMedia, compressIfPossible: Boolean = true) = Attachment.Media(
|
||||||
|
|
|
||||||
|
|
@ -20,14 +20,26 @@ import android.net.Uri
|
||||||
import io.element.android.features.messages.fixtures.aLocalMedia
|
import io.element.android.features.messages.fixtures.aLocalMedia
|
||||||
import io.element.android.features.messages.impl.media.local.LocalMedia
|
import io.element.android.features.messages.impl.media.local.LocalMedia
|
||||||
import io.element.android.features.messages.impl.media.local.LocalMediaFactory
|
import io.element.android.features.messages.impl.media.local.LocalMediaFactory
|
||||||
|
import io.element.android.features.messages.impl.media.local.MediaInfo
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes
|
import io.element.android.libraries.core.mimetype.MimeTypes
|
||||||
import io.element.android.libraries.matrix.api.media.MediaFile
|
import io.element.android.libraries.matrix.api.media.MediaFile
|
||||||
|
|
||||||
class FakeLocalMediaFactory(private val localMediaUri: Uri) : LocalMediaFactory {
|
class FakeLocalMediaFactory(private val localMediaUri: Uri) : LocalMediaFactory {
|
||||||
|
|
||||||
var fallbackMimeType: String = MimeTypes.OctetStream
|
var fallbackMimeType: String = MimeTypes.OctetStream
|
||||||
|
var fallbackName: String = "File name"
|
||||||
|
var fallbackFileSize = "0B"
|
||||||
|
|
||||||
|
override fun createFromMediaFile(mediaFile: MediaFile, mediaInfo: MediaInfo): LocalMedia {
|
||||||
|
return aLocalMedia(uri = localMediaUri, mediaInfo = mediaInfo)
|
||||||
|
}
|
||||||
|
|
||||||
override fun createFromUri(uri: Uri, mimeType: String?, name: String?, formattedFileSize: String?): LocalMedia {
|
override fun createFromUri(uri: Uri, mimeType: String?, name: String?, formattedFileSize: String?): LocalMedia {
|
||||||
return aLocalMedia(uri, mimeType ?: fallbackMimeType)
|
val mediaInfo = MediaInfo(
|
||||||
|
name = name ?: fallbackName,
|
||||||
|
mimeType = mimeType ?: fallbackMimeType,
|
||||||
|
formattedFileSize = formattedFileSize ?: fallbackFileSize
|
||||||
|
)
|
||||||
|
return aLocalMedia(uri, mediaInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,8 @@ private const val TESTED_MEDIA_NAME = "MediaName"
|
||||||
|
|
||||||
class MediaViewerPresenterTest {
|
class MediaViewerPresenterTest {
|
||||||
|
|
||||||
private val mockMediaUrl: Uri = mockk("localMediaUri")
|
private val mockMediaUri: Uri = mockk("localMediaUri")
|
||||||
private val localMediaFactory = FakeLocalMediaFactory(mockMediaUrl)
|
private val localMediaFactory = FakeLocalMediaFactory(mockMediaUri)
|
||||||
private val mediaLoader = FakeMediaLoader()
|
private val mediaLoader = FakeMediaLoader()
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue