Add test on MessagesViewTest: clicking on a custom emoji emits the expected Events.
And fix a bug, the Event `CustomReactionEvents.DismissCustomReactionSheet` is actually managed by the BottomSheet itself.
This commit is contained in:
parent
9f50b5a31d
commit
a11922e57b
3 changed files with 47 additions and 2 deletions
|
|
@ -154,9 +154,10 @@ fun aReactionSummaryState(
|
||||||
)
|
)
|
||||||
|
|
||||||
fun aCustomReactionState(
|
fun aCustomReactionState(
|
||||||
|
target: CustomReactionState.Target = CustomReactionState.Target.None,
|
||||||
eventSink: (CustomReactionEvents) -> Unit = {},
|
eventSink: (CustomReactionEvents) -> Unit = {},
|
||||||
) = CustomReactionState(
|
) = CustomReactionState(
|
||||||
target = CustomReactionState.Target.None,
|
target = target,
|
||||||
selectedEmoji = persistentSetOf(),
|
selectedEmoji = persistentSetOf(),
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -250,7 +250,6 @@ fun MessagesView(
|
||||||
state = state.customReactionState,
|
state = state.customReactionState,
|
||||||
onEmojiSelected = { eventId, emoji ->
|
onEmojiSelected = { eventId, emoji ->
|
||||||
state.eventSink(MessagesEvents.ToggleReaction(emoji.unicode, eventId))
|
state.eventSink(MessagesEvents.ToggleReaction(emoji.unicode, eventId))
|
||||||
state.customReactionState.eventSink(CustomReactionEvents.DismissCustomReactionSheet)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,9 @@ import androidx.compose.ui.test.performClick
|
||||||
import androidx.compose.ui.test.performTouchInput
|
import androidx.compose.ui.test.performTouchInput
|
||||||
import androidx.compose.ui.test.swipeRight
|
import androidx.compose.ui.test.swipeRight
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import io.element.android.emojibasebindings.Emoji
|
||||||
|
import io.element.android.emojibasebindings.EmojibaseCategory
|
||||||
|
import io.element.android.emojibasebindings.EmojibaseStore
|
||||||
import io.element.android.features.messages.impl.actionlist.ActionListEvents
|
import io.element.android.features.messages.impl.actionlist.ActionListEvents
|
||||||
import io.element.android.features.messages.impl.actionlist.ActionListState
|
import io.element.android.features.messages.impl.actionlist.ActionListState
|
||||||
import io.element.android.features.messages.impl.actionlist.anActionListState
|
import io.element.android.features.messages.impl.actionlist.anActionListState
|
||||||
|
|
@ -45,6 +48,7 @@ import io.element.android.features.messages.impl.timeline.aTimelineItemReadRecei
|
||||||
import io.element.android.features.messages.impl.timeline.aTimelineRoomInfo
|
import io.element.android.features.messages.impl.timeline.aTimelineRoomInfo
|
||||||
import io.element.android.features.messages.impl.timeline.aTimelineState
|
import io.element.android.features.messages.impl.timeline.aTimelineState
|
||||||
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvents
|
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvents
|
||||||
|
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionState
|
||||||
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents
|
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.aReadReceiptData
|
import io.element.android.features.messages.impl.timeline.components.receipt.aReadReceiptData
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
|
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
|
||||||
|
|
@ -426,6 +430,47 @@ class MessagesViewTest {
|
||||||
rule.mainClock.advanceTimeBy(milliseconds = 1_000)
|
rule.mainClock.advanceTimeBy(milliseconds = 1_000)
|
||||||
eventsRecorder.assertSingle(CustomReactionEvents.ShowCustomReactionSheet(timelineItem))
|
eventsRecorder.assertSingle(CustomReactionEvents.ShowCustomReactionSheet(timelineItem))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `clicking on a custom emoji emits the expected Events`() {
|
||||||
|
val aUnicode = "🙈"
|
||||||
|
val customReactionStateEventsRecorder = EventsRecorder<CustomReactionEvents>()
|
||||||
|
val eventsRecorder = EventsRecorder<MessagesEvents>()
|
||||||
|
val state = aMessagesState(
|
||||||
|
eventSink = eventsRecorder,
|
||||||
|
)
|
||||||
|
val timelineItem = state.timelineState.timelineItems.first() as TimelineItem.Event
|
||||||
|
val stateWithCustomReactionState = state.copy(
|
||||||
|
customReactionState = aCustomReactionState(
|
||||||
|
target = CustomReactionState.Target.Success(
|
||||||
|
event = timelineItem,
|
||||||
|
emojibaseStore = EmojibaseStore(
|
||||||
|
categories = mapOf(
|
||||||
|
EmojibaseCategory.People to listOf(
|
||||||
|
Emoji(
|
||||||
|
hexcode = "",
|
||||||
|
label = "",
|
||||||
|
tags = emptyList(),
|
||||||
|
shortcodes = emptyList(),
|
||||||
|
unicode = aUnicode,
|
||||||
|
skins = null,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
eventSink = customReactionStateEventsRecorder
|
||||||
|
),
|
||||||
|
)
|
||||||
|
rule.setMessagesView(
|
||||||
|
state = stateWithCustomReactionState,
|
||||||
|
)
|
||||||
|
rule.onNodeWithText(aUnicode, useUnmergedTree = true).performClick()
|
||||||
|
// Give time for the close animation to complete
|
||||||
|
rule.mainClock.advanceTimeBy(milliseconds = 1_000)
|
||||||
|
customReactionStateEventsRecorder.assertSingle(CustomReactionEvents.DismissCustomReactionSheet)
|
||||||
|
eventsRecorder.assertSingle(MessagesEvents.ToggleReaction(aUnicode, timelineItem.eventId!!))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setMessagesView(
|
private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setMessagesView(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue