Fix tests.
This commit is contained in:
@@ -31,12 +31,15 @@ import io.element.android.libraries.push.impl.notifications.fixtures.aSimpleNoti
|
||||
import io.element.android.libraries.push.impl.notifications.fixtures.anInviteNotifiableEvent
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
|
||||
private val MY_AVATAR_URL: String? = null
|
||||
private val AN_INVITATION_EVENT = anInviteNotifiableEvent(roomId = A_ROOM_ID)
|
||||
private val A_SIMPLE_EVENT = aSimpleNotifiableEvent(eventId = AN_EVENT_ID)
|
||||
private val A_MESSAGE_EVENT = aNotifiableMessageEvent(eventId = AN_EVENT_ID, roomId = A_ROOM_ID)
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
class NotificationFactoryTest {
|
||||
|
||||
private val androidNotificationFactory = FakeAndroidNotificationFactory()
|
||||
@@ -131,12 +134,14 @@ class NotificationFactoryTest {
|
||||
)
|
||||
val roomWithMessage = mapOf(A_ROOM_ID to listOf(ProcessedEvent(ProcessedEvent.Type.KEEP, A_MESSAGE_EVENT)))
|
||||
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = roomWithMessage.toNotifications(
|
||||
currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL),
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
|
||||
assertThat(result).isEqualTo(listOf(expectedNotification))
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -144,9 +149,10 @@ class NotificationFactoryTest {
|
||||
val events = listOf(ProcessedEvent(ProcessedEvent.Type.REMOVE, A_MESSAGE_EVENT))
|
||||
val emptyRoom = mapOf(A_ROOM_ID to events)
|
||||
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = emptyRoom.toNotifications(
|
||||
currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL),
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
|
||||
assertThat(result).isEqualTo(
|
||||
@@ -156,15 +162,17 @@ class NotificationFactoryTest {
|
||||
)
|
||||
)
|
||||
)
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `given a room with only redacted events when mapping to notification then is Empty`() = testWith(notificationFactory) {
|
||||
val redactedRoom = mapOf(A_ROOM_ID to listOf(ProcessedEvent(ProcessedEvent.Type.KEEP, A_MESSAGE_EVENT.copy(isRedacted = true))))
|
||||
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = redactedRoom.toNotifications(
|
||||
currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL),
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
|
||||
assertThat(result).isEqualTo(
|
||||
@@ -174,6 +182,7 @@ class NotificationFactoryTest {
|
||||
)
|
||||
)
|
||||
)
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -193,12 +202,14 @@ class NotificationFactoryTest {
|
||||
A_ROOM_ID,
|
||||
)
|
||||
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = roomWithRedactedMessage.toNotifications(
|
||||
currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL),
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
|
||||
assertThat(result).isEqualTo(listOf(expectedNotification))
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven
|
||||
import io.mockk.mockk
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
|
||||
private const val MY_USER_DISPLAY_NAME = "display-name"
|
||||
private const val MY_USER_AVATAR_URL = "avatar-url"
|
||||
@@ -43,6 +45,7 @@ private val MESSAGE_META = RoomNotification.Message.Meta(
|
||||
)
|
||||
private val ONE_SHOT_META = OneShotNotification.Append.Meta(key = "ignored", summaryLine = "ignored", isNoisy = false, timestamp = -1)
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
class NotificationRendererTest {
|
||||
|
||||
private val notificationDisplayer = FakeNotificationDisplayer()
|
||||
@@ -199,7 +202,7 @@ class NotificationRendererTest {
|
||||
MatrixUser(A_SESSION_ID, MY_USER_DISPLAY_NAME, MY_USER_AVATAR_URL),
|
||||
useCompleteNotificationFormat = USE_COMPLETE_NOTIFICATION_FORMAT,
|
||||
eventsToProcess = AN_EVENT_LIST,
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = FakeImageLoader().getImageLoader(),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -17,13 +17,8 @@
|
||||
package io.element.android.libraries.push.impl.notifications
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Build
|
||||
import coil.Coil
|
||||
import coil.ImageLoader
|
||||
import coil.annotation.ExperimentalCoilApi
|
||||
import coil.test.FakeImageLoaderEngine
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import io.element.android.libraries.matrix.api.media.MediaSource
|
||||
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
||||
@@ -51,6 +46,7 @@ class RoomGroupMessageCreatorTest {
|
||||
@Test
|
||||
fun `test createRoomMessage with one Event`() = runTest {
|
||||
val sut = createRoomGroupMessageCreator()
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = sut.createRoomMessage(
|
||||
currentUser = aMatrixUser(),
|
||||
events = listOf(
|
||||
@@ -59,7 +55,7 @@ class RoomGroupMessageCreatorTest {
|
||||
)
|
||||
),
|
||||
roomId = A_ROOM_ID,
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
val resultMetaWithoutFormatting = result.meta.copy(
|
||||
summaryLine = result.meta.summaryLine.toString()
|
||||
@@ -73,11 +69,13 @@ class RoomGroupMessageCreatorTest {
|
||||
shouldBing = false,
|
||||
)
|
||||
)
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test createRoomMessage with one noisy Event`() = runTest {
|
||||
val sut = createRoomGroupMessageCreator()
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = sut.createRoomMessage(
|
||||
currentUser = aMatrixUser(),
|
||||
events = listOf(
|
||||
@@ -86,7 +84,7 @@ class RoomGroupMessageCreatorTest {
|
||||
)
|
||||
),
|
||||
roomId = A_ROOM_ID,
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
val resultMetaWithoutFormatting = result.meta.copy(
|
||||
summaryLine = result.meta.summaryLine.toString()
|
||||
@@ -100,6 +98,7 @@ class RoomGroupMessageCreatorTest {
|
||||
shouldBing = true,
|
||||
)
|
||||
)
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -144,20 +143,7 @@ class RoomGroupMessageCreatorTest {
|
||||
api: Int,
|
||||
expectedCoilRequests: List<Any>,
|
||||
) = runTest {
|
||||
val coilRequests = mutableListOf<Any>()
|
||||
val engine = FakeImageLoaderEngine.Builder()
|
||||
.intercept(
|
||||
predicate = {
|
||||
coilRequests.add(it)
|
||||
true
|
||||
},
|
||||
drawable = ColorDrawable(Color.BLUE)
|
||||
)
|
||||
.build()
|
||||
val imageLoader = ImageLoader.Builder(RuntimeEnvironment.getApplication())
|
||||
.components { add(engine) }
|
||||
.build()
|
||||
Coil.setImageLoader(imageLoader)
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val sut = createRoomGroupMessageCreator(
|
||||
sdkIntProvider = FakeBuildVersionSdkIntProvider(api)
|
||||
)
|
||||
@@ -173,7 +159,7 @@ class RoomGroupMessageCreatorTest {
|
||||
)
|
||||
),
|
||||
roomId = A_ROOM_ID,
|
||||
imageLoader = imageLoader,
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
val resultMetaWithoutFormatting = result.meta.copy(
|
||||
summaryLine = result.meta.summaryLine.toString()
|
||||
@@ -187,12 +173,13 @@ class RoomGroupMessageCreatorTest {
|
||||
shouldBing = false,
|
||||
)
|
||||
)
|
||||
assertThat(coilRequests.toList()).isEqualTo(expectedCoilRequests)
|
||||
assertThat(fakeImageLoader.getCoilRequests()).isEqualTo(expectedCoilRequests)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test createRoomMessage with two Events`() = runTest {
|
||||
val sut = createRoomGroupMessageCreator()
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = sut.createRoomMessage(
|
||||
currentUser = aMatrixUser(),
|
||||
events = listOf(
|
||||
@@ -200,7 +187,7 @@ class RoomGroupMessageCreatorTest {
|
||||
aNotifiableMessageEvent(timestamp = A_TIMESTAMP + 10),
|
||||
),
|
||||
roomId = A_ROOM_ID,
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
val resultMetaWithoutFormatting = result.meta.copy(
|
||||
summaryLine = result.meta.summaryLine.toString()
|
||||
@@ -214,11 +201,13 @@ class RoomGroupMessageCreatorTest {
|
||||
shouldBing = false,
|
||||
)
|
||||
)
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test createRoomMessage with smart reply error`() = runTest {
|
||||
val sut = createRoomGroupMessageCreator()
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = sut.createRoomMessage(
|
||||
currentUser = aMatrixUser(),
|
||||
events = listOf(
|
||||
@@ -228,7 +217,7 @@ class RoomGroupMessageCreatorTest {
|
||||
),
|
||||
),
|
||||
roomId = A_ROOM_ID,
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
val resultMetaWithoutFormatting = result.meta.copy(
|
||||
summaryLine = result.meta.summaryLine.toString()
|
||||
@@ -242,11 +231,13 @@ class RoomGroupMessageCreatorTest {
|
||||
shouldBing = false,
|
||||
)
|
||||
)
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test createRoomMessage for direct room`() = runTest {
|
||||
val sut = createRoomGroupMessageCreator()
|
||||
val fakeImageLoader = FakeImageLoader()
|
||||
val result = sut.createRoomMessage(
|
||||
currentUser = aMatrixUser(),
|
||||
events = listOf(
|
||||
@@ -255,7 +246,7 @@ class RoomGroupMessageCreatorTest {
|
||||
),
|
||||
),
|
||||
roomId = A_ROOM_ID,
|
||||
imageLoader = FakeImageLoader(),
|
||||
imageLoader = fakeImageLoader.getImageLoader(),
|
||||
)
|
||||
val resultMetaWithoutFormatting = result.meta.copy(
|
||||
summaryLine = result.meta.summaryLine.toString()
|
||||
@@ -269,6 +260,7 @@ class RoomGroupMessageCreatorTest {
|
||||
shouldBing = false,
|
||||
)
|
||||
)
|
||||
assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,32 +16,40 @@
|
||||
|
||||
package io.element.android.libraries.push.impl.notifications.fake
|
||||
|
||||
import coil.ComponentRegistry
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import coil.ImageLoader
|
||||
import coil.disk.DiskCache
|
||||
import coil.memory.MemoryCache
|
||||
import coil.request.DefaultRequestOptions
|
||||
import coil.request.Disposable
|
||||
import coil.request.ImageRequest
|
||||
import coil.request.ImageResult
|
||||
import coil.annotation.ExperimentalCoilApi
|
||||
import coil.test.FakeImageLoaderEngine
|
||||
import org.robolectric.RuntimeEnvironment
|
||||
|
||||
class FakeImageLoader : ImageLoader {
|
||||
override val components: ComponentRegistry = error("Fake class")
|
||||
override val defaults: DefaultRequestOptions = error("Fake class")
|
||||
override val diskCache: DiskCache? = null
|
||||
override val memoryCache: MemoryCache? = null
|
||||
@OptIn(ExperimentalCoilApi::class)
|
||||
class FakeImageLoader {
|
||||
private val coilRequests = mutableListOf<Any>()
|
||||
|
||||
override fun enqueue(request: ImageRequest): Disposable {
|
||||
error("Fake class")
|
||||
private var cache: ImageLoader? = null
|
||||
|
||||
fun getImageLoader(): ImageLoader {
|
||||
return cache ?: ImageLoader.Builder(RuntimeEnvironment.getApplication())
|
||||
.components {
|
||||
val engine = FakeImageLoaderEngine.Builder()
|
||||
.intercept(
|
||||
predicate = {
|
||||
coilRequests.add(it)
|
||||
true
|
||||
},
|
||||
drawable = ColorDrawable(Color.BLUE)
|
||||
)
|
||||
.build()
|
||||
add(engine)
|
||||
}
|
||||
.build()
|
||||
.also {
|
||||
cache = it
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun execute(request: ImageRequest): ImageResult {
|
||||
error("Fake class")
|
||||
fun getCoilRequests(): List<Any> {
|
||||
return coilRequests.toList()
|
||||
}
|
||||
|
||||
override fun newBuilder(): ImageLoader.Builder {
|
||||
error("Fake class")
|
||||
}
|
||||
|
||||
override fun shutdown() = Unit
|
||||
}
|
||||
|
||||
@@ -21,7 +21,8 @@ import io.element.android.libraries.matrix.api.MatrixClient
|
||||
import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder
|
||||
|
||||
class FakeImageLoaderHolder : ImageLoaderHolder {
|
||||
private val fakeImageLoader = FakeImageLoader()
|
||||
override fun get(client: MatrixClient): ImageLoader {
|
||||
return FakeImageLoader()
|
||||
return fakeImageLoader.getImageLoader()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user