diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadataKtTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadataKtTest.kt index cb79f5cd08..f3a524a5ce 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadataKtTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadataKtTest.kt @@ -34,10 +34,18 @@ import io.element.android.libraries.matrix.api.media.FileInfo import io.element.android.libraries.matrix.api.media.VideoInfo import io.element.android.libraries.matrix.api.timeline.item.event.AudioMessageType import io.element.android.libraries.matrix.api.timeline.item.event.EventContent +import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParseMessageLikeContent +import io.element.android.libraries.matrix.api.timeline.item.event.FailedToParseStateContent import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageType import io.element.android.libraries.matrix.api.timeline.item.event.ImageMessageType import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType +import io.element.android.libraries.matrix.api.timeline.item.event.OtherState +import io.element.android.libraries.matrix.api.timeline.item.event.ProfileChangeContent import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent +import io.element.android.libraries.matrix.api.timeline.item.event.RoomMembershipContent +import io.element.android.libraries.matrix.api.timeline.item.event.StateContent +import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent +import io.element.android.libraries.matrix.api.timeline.item.event.UnknownContent import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType import io.element.android.libraries.matrix.test.AN_EVENT_ID @@ -277,11 +285,115 @@ class InReplyToMetadataKtTest { } @Test - fun `any other content`() = runTest { + fun `redacted content`() = runTest { moleculeFlow(RecompositionMode.Immediate) { anInReplyToDetails( eventContent = RedactedContent ).metadata() + }.test { + awaitItem().let { + assertThat(it).isEqualTo(InReplyToMetadata.Redacted) + } + } + } + + @Test + fun `unable to decrypt content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = UnableToDecryptContent(UnableToDecryptContent.Data.Unknown) + ).metadata() + }.test { + awaitItem().let { + assertThat(it).isEqualTo(InReplyToMetadata.UnableToDecrypt) + } + } + } + + @Test + fun `failed to parse message content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = FailedToParseMessageLikeContent("", "") + ).metadata() + }.test { + awaitItem().let { + assertThat(it).isNull() + } + } + } + + @Test + fun `failed to parse state content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = FailedToParseStateContent("", "", "") + ).metadata() + }.test { + awaitItem().let { + assertThat(it).isNull() + } + } + } + + @Test + fun `profile change content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = ProfileChangeContent("", "", "", "") + ).metadata() + }.test { + awaitItem().let { + assertThat(it).isNull() + } + } + } + + @Test + fun `room membership content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = RoomMembershipContent(A_USER_ID, null) + ).metadata() + }.test { + awaitItem().let { + assertThat(it).isNull() + } + } + } + + @Test + fun `state content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = StateContent("", OtherState.RoomJoinRules) + ).metadata() + }.test { + awaitItem().let { + assertThat(it).isNull() + } + } + } + + @Test + fun `unknown content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = UnknownContent + ).metadata() + }.test { + awaitItem().let { + assertThat(it).isNull() + } + } + } + + @Test + fun `null content`() = runTest { + moleculeFlow(RecompositionMode.Immediate) { + anInReplyToDetails( + eventContent = null + ).metadata() }.test { awaitItem().let { assertThat(it).isNull()