Skip to content

Commit cbad0c3

Browse files
committed
Complete test on MediaGalleryPresenter
1 parent 0d7d33c commit cbad0c3

File tree

1 file changed

+108
-6
lines changed

1 file changed

+108
-6
lines changed

libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt

Lines changed: 108 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ package io.element.android.libraries.mediaviewer.impl.gallery
1010
import android.net.Uri
1111
import app.cash.turbine.ReceiveTurbine
1212
import com.google.common.truth.Truth.assertThat
13+
import io.element.android.libraries.architecture.AsyncData
1314
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
15+
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
1416
import io.element.android.libraries.matrix.api.core.EventId
1517
import io.element.android.libraries.matrix.api.room.JoinedRoom
1618
import io.element.android.libraries.matrix.api.timeline.Timeline
@@ -29,6 +31,7 @@ import io.element.android.libraries.mediaviewer.impl.details.MediaBottomSheetSta
2931
import io.element.android.libraries.mediaviewer.impl.model.aMediaItemImage
3032
import io.element.android.libraries.mediaviewer.test.FakeLocalMediaActions
3133
import io.element.android.libraries.mediaviewer.test.FakeLocalMediaFactory
34+
import io.element.android.libraries.ui.strings.CommonStrings
3235
import io.element.android.tests.testutils.WarmUpRule
3336
import io.element.android.tests.testutils.lambda.lambdaRecorder
3437
import io.element.android.tests.testutils.lambda.value
@@ -147,8 +150,8 @@ class MediaGalleryPresenterTest {
147150
val presenter = createMediaGalleryPresenter(
148151
room = FakeJoinedRoom(
149152
baseRoom = FakeBaseRoom(
150-
sessionId = A_USER_ID,
151-
initialRoomInfo = aRoomInfo(name = A_ROOM_NAME),
153+
sessionId = A_USER_ID,
154+
initialRoomInfo = aRoomInfo(name = A_ROOM_NAME),
152155
canRedactOtherResult = { Result.success(canDeleteOther) },
153156
),
154157
createTimelineResult = { Result.success(FakeTimeline()) }
@@ -223,23 +226,122 @@ class MediaGalleryPresenterTest {
223226
}
224227

225228
@Test
226-
fun `present - share item`() = runTest {
229+
fun `present - share item - item not found`() = runTest {
227230
val presenter = createMediaGalleryPresenter()
228231
presenter.test {
229232
val initialState = awaitFirstItem()
230233
initialState.eventSink(MediaGalleryEvents.Share(AN_EVENT_ID))
231234
}
232-
// TODO Add more test on this part
233235
}
234236

235237
@Test
236-
fun `present - save on disk`() = runTest {
238+
fun `present - share item - item found`() = runTest {
239+
val mediaGalleryDataSource = FakeMediaGalleryDataSource(
240+
startLambda = { },
241+
)
242+
mediaGalleryDataSource.emitGroupedMediaItems(
243+
AsyncData.Success(
244+
aGroupedMediaItems(
245+
imageAndVideoItems = listOf(aMediaItemImage(eventId = AN_EVENT_ID)),
246+
fileItems = emptyList(),
247+
)
248+
)
249+
)
250+
val presenter = createMediaGalleryPresenter(
251+
mediaGalleryDataSource = mediaGalleryDataSource,
252+
)
253+
presenter.test {
254+
val initialState = awaitFirstItem()
255+
initialState.eventSink(MediaGalleryEvents.Share(AN_EVENT_ID))
256+
val finalState = awaitItem()
257+
assertThat(finalState.snackbarMessage).isNull()
258+
}
259+
}
260+
261+
@Test
262+
fun `present - share item - item found - download error`() = runTest {
263+
val mediaGalleryDataSource = FakeMediaGalleryDataSource(
264+
startLambda = { },
265+
)
266+
mediaGalleryDataSource.emitGroupedMediaItems(
267+
AsyncData.Success(
268+
aGroupedMediaItems(
269+
imageAndVideoItems = listOf(aMediaItemImage(eventId = AN_EVENT_ID)),
270+
fileItems = emptyList(),
271+
)
272+
)
273+
)
274+
val presenter = createMediaGalleryPresenter(
275+
mediaGalleryDataSource = mediaGalleryDataSource,
276+
matrixMediaLoader = FakeMatrixMediaLoader().apply { shouldFail = true },
277+
)
278+
presenter.test {
279+
val initialState = awaitFirstItem()
280+
initialState.eventSink(MediaGalleryEvents.Share(AN_EVENT_ID))
281+
skipItems(1)
282+
val finalState = awaitItem()
283+
assertThat(finalState.snackbarMessage).isInstanceOf(SnackbarMessage::class.java)
284+
}
285+
}
286+
287+
@Test
288+
fun `present - save on disk - item not found`() = runTest {
237289
val presenter = createMediaGalleryPresenter()
238290
presenter.test {
239291
val initialState = awaitFirstItem()
240292
initialState.eventSink(MediaGalleryEvents.SaveOnDisk(AN_EVENT_ID))
241293
}
242-
// TODO Add more test on this part
294+
}
295+
296+
@Test
297+
fun `present - save on disk - item found`() = runTest {
298+
val mediaGalleryDataSource = FakeMediaGalleryDataSource(
299+
startLambda = { },
300+
)
301+
mediaGalleryDataSource.emitGroupedMediaItems(
302+
AsyncData.Success(
303+
aGroupedMediaItems(
304+
imageAndVideoItems = listOf(aMediaItemImage(eventId = AN_EVENT_ID)),
305+
fileItems = emptyList(),
306+
)
307+
)
308+
)
309+
val presenter = createMediaGalleryPresenter(
310+
mediaGalleryDataSource = mediaGalleryDataSource,
311+
)
312+
presenter.test {
313+
val initialState = awaitFirstItem()
314+
initialState.eventSink(MediaGalleryEvents.SaveOnDisk(AN_EVENT_ID))
315+
skipItems(1)
316+
val finalState = awaitItem()
317+
assertThat(finalState.snackbarMessage?.messageResId).isEqualTo(CommonStrings.common_file_saved_on_disk_android)
318+
}
319+
}
320+
321+
@Test
322+
fun `present - save on disk - item found - download error`() = runTest {
323+
val mediaGalleryDataSource = FakeMediaGalleryDataSource(
324+
startLambda = { },
325+
)
326+
mediaGalleryDataSource.emitGroupedMediaItems(
327+
AsyncData.Success(
328+
aGroupedMediaItems(
329+
imageAndVideoItems = listOf(aMediaItemImage(eventId = AN_EVENT_ID)),
330+
fileItems = emptyList(),
331+
)
332+
)
333+
)
334+
val presenter = createMediaGalleryPresenter(
335+
mediaGalleryDataSource = mediaGalleryDataSource,
336+
matrixMediaLoader = FakeMatrixMediaLoader().apply { shouldFail = true },
337+
)
338+
presenter.test {
339+
val initialState = awaitFirstItem()
340+
initialState.eventSink(MediaGalleryEvents.SaveOnDisk(AN_EVENT_ID))
341+
skipItems(1)
342+
val finalState = awaitItem()
343+
assertThat(finalState.snackbarMessage).isInstanceOf(SnackbarMessage::class.java)
344+
}
243345
}
244346

245347
@Test

0 commit comments

Comments
 (0)