Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.flipcash.app.blob

import android.content.Context
import android.webkit.MimeTypeMap
import androidx.test.core.app.ApplicationProvider
import com.getcode.util.resources.AndroidContentReader
import org.junit.Before
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf
import kotlin.test.Test
import kotlin.test.assertEquals

/** The real cache, so a member that shadows the top-level `uploadMimeFor` recurses here instead of in production. */
@RunWith(RobolectricTestRunner::class)
class AndroidUploadImageCacheTest {

private val context: Context = ApplicationProvider.getApplicationContext()
private val cache = AndroidUploadImageCache(context, AndroidContentReader(context))

@Before
fun registerMimeTypes() {
shadowOf(MimeTypeMap.getSingleton()).apply {
addExtensionMimeTypeMapping("jpeg", "image/jpeg")
addExtensionMimeTypeMapping("jpg", "image/jpeg")
addExtensionMimeTypeMapping("png", "image/png")
addExtensionMimeTypeMapping("heic", "image/heic")
}
}

@Test
fun `a JPEG source uploads as JPEG`() {
assertEquals("image/jpeg", cache.uploadMimeFor("image/jpeg"))
}

@Test
fun `a non-JPEG source uploads as PNG`() {
assertEquals("image/png", cache.uploadMimeFor("image/heic"))
}

@Test
fun `an unknown source uploads as PNG`() {
assertEquals("image/png", cache.uploadMimeFor(null))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.flipcash.app.blob

import android.content.Context
import com.getcode.util.resources.ContentReader
import com.getcode.util.resources.uploadMimeFor
import com.getcode.util.resources.uploadMimeFor as contentUploadMimeFor
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject

Expand All @@ -13,7 +13,7 @@ internal class AndroidUploadImageCache @Inject constructor(
) : UploadImageCache {
override fun mimeType(photo: PickedPhoto): String? = contentReader.mimeType(photo.toUri())

override fun uploadMimeFor(sourceMimeType: String?): String = uploadMimeFor(sourceMimeType)
override fun uploadMimeFor(sourceMimeType: String?): String = contentUploadMimeFor(sourceMimeType)

override fun copyToCache(photo: PickedPhoto, fileName: String, maxSize: Int, mimeType: String?): PickedPhoto? =
contentReader.copyToCache(photo.toUri(), fileName, maxSize, mimeType)
Expand Down
Loading