Skip to content

Commit 6743e3b

Browse files
committed
Pinned events : add more tests on pin/unpin
1 parent cbae8fd commit 6743e3b

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ import io.element.android.libraries.matrix.test.AN_EVENT_ID
7878
import io.element.android.libraries.matrix.test.A_ROOM_ID
7979
import io.element.android.libraries.matrix.test.A_SESSION_ID
8080
import io.element.android.libraries.matrix.test.A_SESSION_ID_2
81+
import io.element.android.libraries.matrix.test.A_THROWABLE
8182
import io.element.android.libraries.matrix.test.core.aBuildMeta
8283
import io.element.android.libraries.matrix.test.permalink.FakePermalinkBuilder
8384
import io.element.android.libraries.matrix.test.permalink.FakePermalinkParser
@@ -898,10 +899,9 @@ class MessagesPresenterTest {
898899

899900
@Test
900901
fun `present - handle action pin`() = runTest {
901-
val pinEventLambda = lambdaRecorder { _: EventId -> Result.success(true) }
902-
val timeline = FakeTimeline().apply {
903-
this.pinEventLambda = pinEventLambda
904-
}
902+
val successPinEventLambda = lambdaRecorder { _: EventId -> Result.success(true) }
903+
val failurePinEventLambda = lambdaRecorder { _: EventId -> Result.failure<Boolean>(A_THROWABLE) }
904+
val timeline = FakeTimeline()
905905
val room = FakeMatrixRoom(
906906
liveTimeline = timeline,
907907
canUserSendMessageResult = { _, _ -> Result.success(true) },
@@ -919,17 +919,23 @@ class MessagesPresenterTest {
919919
content = aTimelineItemTextContent()
920920
)
921921
val initialState = awaitFirstItem()
922+
923+
timeline.pinEventLambda = successPinEventLambda
924+
initialState.eventSink.invoke(MessagesEvents.HandleAction(TimelineItemAction.Pin, messageEvent))
925+
assert(successPinEventLambda).isCalledOnce().with(value(messageEvent.eventId))
926+
927+
timeline.pinEventLambda = failurePinEventLambda
922928
initialState.eventSink.invoke(MessagesEvents.HandleAction(TimelineItemAction.Pin, messageEvent))
923-
assert(pinEventLambda).isCalledOnce().with(value(messageEvent.eventId))
929+
assert(failurePinEventLambda).isCalledOnce().with(value(messageEvent.eventId))
930+
assertThat(awaitItem().snackbarMessage).isNotNull()
924931
}
925932
}
926933

927934
@Test
928935
fun `present - handle action unpin`() = runTest {
929-
val unpinEventLambda = lambdaRecorder { _: EventId -> Result.success(true) }
930-
val timeline = FakeTimeline().apply {
931-
this.unpinEventLambda = unpinEventLambda
932-
}
936+
val successUnpinEventLambda = lambdaRecorder { _: EventId -> Result.success(true) }
937+
val failureUnpinEventLambda = lambdaRecorder { _: EventId -> Result.failure<Boolean>(A_THROWABLE) }
938+
val timeline = FakeTimeline()
933939
val room = FakeMatrixRoom(
934940
liveTimeline = timeline,
935941
canUserSendMessageResult = { _, _ -> Result.success(true) },
@@ -947,8 +953,15 @@ class MessagesPresenterTest {
947953
content = aTimelineItemTextContent()
948954
)
949955
val initialState = awaitFirstItem()
956+
957+
timeline.unpinEventLambda = successUnpinEventLambda
958+
initialState.eventSink.invoke(MessagesEvents.HandleAction(TimelineItemAction.Unpin, messageEvent))
959+
assert(successUnpinEventLambda).isCalledOnce().with(value(messageEvent.eventId))
960+
961+
timeline.unpinEventLambda = failureUnpinEventLambda
950962
initialState.eventSink.invoke(MessagesEvents.HandleAction(TimelineItemAction.Unpin, messageEvent))
951-
assert(unpinEventLambda).isCalledOnce().with(value(messageEvent.eventId))
963+
assert(failureUnpinEventLambda).isCalledOnce().with(value(messageEvent.eventId))
964+
assertThat(awaitItem().snackbarMessage).isNotNull()
952965
}
953966
}
954967

0 commit comments

Comments
 (0)