SpaceEvents -> SpaceEvent

This commit is contained in:
Benoit Marty
2026-08-25 10:26:02 +02:00
parent 15cdd85357
commit d07eba9a20
7 changed files with 100 additions and 100 deletions
@@ -11,21 +11,21 @@ package io.element.android.features.space.impl.root
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.spaces.SpaceRoom
sealed interface SpaceEvents {
data object LoadMore : SpaceEvents
data class Join(val spaceRoom: SpaceRoom) : SpaceEvents
data object ClearFailures : SpaceEvents
data class AcceptInvite(val spaceRoom: SpaceRoom) : SpaceEvents
data class DeclineInvite(val spaceRoom: SpaceRoom) : SpaceEvents
sealed interface SpaceEvent {
data object LoadMore : SpaceEvent
data class Join(val spaceRoom: SpaceRoom) : SpaceEvent
data object ClearFailures : SpaceEvent
data class AcceptInvite(val spaceRoom: SpaceRoom) : SpaceEvent
data class DeclineInvite(val spaceRoom: SpaceRoom) : SpaceEvent
data class ShowTopicViewer(val topic: String) : SpaceEvents
data object HideTopicViewer : SpaceEvents
data class ShowTopicViewer(val topic: String) : SpaceEvent
data object HideTopicViewer : SpaceEvent
// Manage mode events
data object EnterManageMode : SpaceEvents
data object ExitManageMode : SpaceEvents
data class ToggleRoomSelection(val roomId: RoomId) : SpaceEvents
data object ConfirmRoomRemoval : SpaceEvents
data object RemoveSelectedRooms : SpaceEvents
data object ClearRemoveAction : SpaceEvents
data object EnterManageMode : SpaceEvent
data object ExitManageMode : SpaceEvent
data class ToggleRoomSelection(val roomId: RoomId) : SpaceEvent
data object ConfirmRoomRemoval : SpaceEvent
data object RemoveSelectedRooms : SpaceEvent
data object ClearRemoveAction : SpaceEvent
}
@@ -150,51 +150,51 @@ class SpacePresenter(
}
}
fun handleEvent(event: SpaceEvents) {
fun handleEvent(event: SpaceEvent) {
when (event) {
// SpaceRoomList is loaded automatically as backend is really slow. Event is kept for future.
SpaceEvents.LoadMore -> Unit
is SpaceEvents.Join -> {
SpaceEvent.LoadMore -> Unit
is SpaceEvent.Join -> {
sessionCoroutineScope.joinRoom(event.spaceRoom, joinActions, setJoinActions)
}
SpaceEvents.ClearFailures -> {
SpaceEvent.ClearFailures -> {
val failedActions = joinActions
.filterValues { it is AsyncAction.Failure }
.mapValues { AsyncAction.Uninitialized }
setJoinActions(joinActions + failedActions)
}
is SpaceEvents.AcceptInvite -> {
is SpaceEvent.AcceptInvite -> {
acceptDeclineInviteState.eventSink(
AcceptDeclineInviteEvent.AcceptInvite(event.spaceRoom.toInviteData())
)
}
is SpaceEvents.DeclineInvite -> {
is SpaceEvent.DeclineInvite -> {
acceptDeclineInviteState.eventSink(
AcceptDeclineInviteEvent.DeclineInvite(invite = event.spaceRoom.toInviteData(), shouldConfirm = true, blockUser = false)
)
}
SpaceEvents.HideTopicViewer -> topicViewerState = TopicViewerState.Hidden
is SpaceEvents.ShowTopicViewer -> topicViewerState = TopicViewerState.Shown(event.topic)
SpaceEvent.HideTopicViewer -> topicViewerState = TopicViewerState.Hidden
is SpaceEvent.ShowTopicViewer -> topicViewerState = TopicViewerState.Shown(event.topic)
// Manage mode events
SpaceEvents.EnterManageMode -> {
SpaceEvent.EnterManageMode -> {
isManageMode = true
selectedRoomIds = emptySet()
}
SpaceEvents.ExitManageMode -> {
SpaceEvent.ExitManageMode -> {
localCoroutineScope.launch { exitManageMode(shouldReset = removedRoomIds.isNotEmpty()) }
}
is SpaceEvents.ToggleRoomSelection -> {
is SpaceEvent.ToggleRoomSelection -> {
selectedRoomIds = if (event.roomId in selectedRoomIds) {
selectedRoomIds - event.roomId
} else {
selectedRoomIds + event.roomId
}
}
SpaceEvents.RemoveSelectedRooms -> {
SpaceEvent.RemoveSelectedRooms -> {
removeRoomsAction = AsyncAction.ConfirmingNoParams
}
SpaceEvents.ConfirmRoomRemoval -> {
SpaceEvent.ConfirmRoomRemoval -> {
localCoroutineScope.launch {
removeRoomsAction = AsyncAction.Loading
val spaceId = spaceRoomList.spaceId
@@ -219,7 +219,7 @@ class SpacePresenter(
}
}
}
SpaceEvents.ClearRemoveAction -> {
SpaceEvent.ClearRemoveAction -> {
removeRoomsAction = AsyncAction.Uninitialized
}
}
@@ -32,7 +32,7 @@ data class SpaceState(
val selectedRoomIds: ImmutableSet<RoomId>,
val canEditSpaceGraph: Boolean,
val removeRoomsAction: AsyncAction<Unit>,
val eventSink: (SpaceEvents) -> Unit
val eventSink: (SpaceEvent) -> Unit
) {
fun isJoining(spaceId: RoomId): Boolean = joinActions[spaceId] == AsyncAction.Loading
fun isSelected(spaceId: RoomId): Boolean = selectedRoomIds.contains(spaceId)
@@ -80,7 +80,7 @@ fun aSpaceState(
selectedRoomIds: Set<RoomId> = emptySet(),
canManageRooms: Boolean = true,
removeRoomsAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
eventSink: (SpaceEvents) -> Unit = { },
eventSink: (SpaceEvent) -> Unit = { },
) = SpaceState(
spaceInfo = spaceInfo,
children = children.toImmutableList(),
@@ -114,7 +114,7 @@ fun SpaceView(
var handledBack by remember { mutableStateOf(false) }
BackHandler(enabled = !handledBack) {
if (state.isManageMode) {
state.eventSink(SpaceEvents.ExitManageMode)
state.eventSink(SpaceEvent.ExitManageMode)
} else {
handledBack = true
onBackClick()
@@ -133,8 +133,8 @@ fun SpaceView(
ManageModeTopBar(
selectedCount = state.selectedCount,
isRemoveButtonEnabled = state.isRemoveButtonEnabled,
onCancelClick = { state.eventSink(SpaceEvents.ExitManageMode) },
onRemoveClick = { state.eventSink(SpaceEvents.RemoveSelectedRooms) },
onCancelClick = { state.eventSink(SpaceEvent.ExitManageMode) },
onRemoveClick = { state.eventSink(SpaceEvent.RemoveSelectedRooms) },
)
}
AnimatedVisibility(
@@ -152,7 +152,7 @@ fun SpaceView(
onSettingsClick = onSettingsClick,
onShareSpace = onShareSpace,
onViewMembersClick = onViewMembersClick,
onManageRoomsClick = { state.eventSink(SpaceEvents.EnterManageMode) },
onManageRoomsClick = { state.eventSink(SpaceEvent.EnterManageMode) },
onAddRoomClick = onAddRoomClick,
onCreateRoomClick = onCreateRoomClick,
)
@@ -168,13 +168,13 @@ fun SpaceView(
state = state,
onRoomClick = { spaceRoom ->
if (state.isManageMode) {
state.eventSink(SpaceEvents.ToggleRoomSelection(spaceRoom.roomId))
state.eventSink(SpaceEvent.ToggleRoomSelection(spaceRoom.roomId))
} else {
onRoomClick(spaceRoom)
}
},
onTopicClick = { topic ->
state.eventSink(SpaceEvents.ShowTopicViewer(topic))
state.eventSink(SpaceEvent.ShowTopicViewer(topic))
},
onCreateRoomClick = onCreateRoomClick,
onAddRoomClick = onAddRoomClick,
@@ -187,8 +187,8 @@ fun SpaceView(
spaceDisplayName = state.spaceInfo.name ?: state.spaceInfo.id.value,
removeRoomsAction = state.removeRoomsAction,
selectedCount = state.selectedCount,
onConfirm = { state.eventSink(SpaceEvents.ConfirmRoomRemoval) },
onDismiss = { state.eventSink(SpaceEvents.ClearRemoveAction) },
onConfirm = { state.eventSink(SpaceEvent.ConfirmRoomRemoval) },
onDismiss = { state.eventSink(SpaceEvent.ClearRemoveAction) },
)
acceptDeclineInviteView()
}
@@ -198,7 +198,7 @@ fun SpaceView(
TopicViewerBottomSheet(
topicViewerState = state.topicViewerState,
onDismiss = {
state.eventSink(SpaceEvents.HideTopicViewer)
state.eventSink(SpaceEvent.HideTopicViewer)
}
)
}
@@ -207,7 +207,7 @@ fun SpaceView(
@Composable
private fun JoinFailuresEffect(
hasAnyFailure: Boolean,
eventSink: (SpaceEvents) -> Unit,
eventSink: (SpaceEvent) -> Unit,
) {
val asyncIndicatorState = rememberAsyncIndicatorState()
val updatedEventSink by rememberUpdatedState(eventSink)
@@ -218,7 +218,7 @@ private fun JoinFailuresEffect(
AsyncIndicator.Failure(text = stringResource(CommonStrings.common_something_went_wrong))
}
delay(AsyncIndicator.DURATION_SHORT)
updatedEventSink(SpaceEvents.ClearFailures)
updatedEventSink(SpaceEvent.ClearFailures)
} else {
asyncIndicatorState.clear()
}
@@ -317,7 +317,7 @@ private fun SpaceViewContent(
}
} else {
spaceRoom.trailingAction(isCurrentlyJoining = isCurrentlyJoining) {
state.eventSink(SpaceEvents.Join(spaceRoom))
state.eventSink(SpaceEvent.Join(spaceRoom))
}
},
bottomAction = if (state.isManageMode) {
@@ -325,10 +325,10 @@ private fun SpaceViewContent(
} else {
spaceRoom.inviteButtons(
onAcceptClick = {
state.eventSink(SpaceEvents.AcceptInvite(spaceRoom))
state.eventSink(SpaceEvent.AcceptInvite(spaceRoom))
},
onDeclineClick = {
state.eventSink(SpaceEvents.DeclineInvite(spaceRoom))
state.eventSink(SpaceEvent.DeclineInvite(spaceRoom))
}
)
}
@@ -384,7 +384,7 @@ private fun EmptySpaceView(
@Composable
private fun LoadingMoreIndicator(
eventSink: (SpaceEvents) -> Unit,
eventSink: (SpaceEvent) -> Unit,
modifier: Modifier = Modifier
) {
Box(
@@ -397,7 +397,7 @@ private fun LoadingMoreIndicator(
)
val latestEventSink by rememberUpdatedState(eventSink)
LaunchedEffect(Unit) {
latestEventSink(SpaceEvents.LoadMore)
latestEventSink(SpaceEvent.LoadMore)
}
}
}
@@ -106,7 +106,7 @@ class SpacePresenterTest {
presenter.test {
val state = awaitItem()
// LoadMore event should not cause any state change
state.eventSink(SpaceEvents.LoadMore)
state.eventSink(SpaceEvent.LoadMore)
expectNoEvents()
}
}
@@ -181,7 +181,7 @@ class SpacePresenterTest {
skipItems(1)
val state = awaitItem()
assertThat(state.joinActions[A_ROOM_ID_2]).isNull()
state.eventSink(SpaceEvents.Join(aNotJoinedRoom))
state.eventSink(SpaceEvent.Join(aNotJoinedRoom))
val joiningState = awaitItem()
assertThat(joiningState.joinActions[A_ROOM_ID_2]).isEqualTo(AsyncAction.Loading)
// Let the joinRoom call complete
@@ -234,14 +234,14 @@ class SpacePresenterTest {
skipItems(1)
val state = awaitItem()
assertThat(state.joinActions[A_ROOM_ID_2]).isNull()
state.eventSink(SpaceEvents.Join(aNotJoinedRoom))
state.eventSink(SpaceEvent.Join(aNotJoinedRoom))
val joiningState = awaitItem()
assertThat(joiningState.joinActions[A_ROOM_ID_2]).isEqualTo(AsyncAction.Loading)
val errorState = awaitItem()
// Joined room is removed from the join actions
assertThat(errorState.joinActions[A_ROOM_ID_2]!!.isFailure()).isTrue()
// Clear error
errorState.eventSink(SpaceEvents.ClearFailures)
errorState.eventSink(SpaceEvent.ClearFailures)
val clearedState = awaitItem()
assertThat(clearedState.joinActions[A_ROOM_ID_2]).isEqualTo(AsyncAction.Uninitialized)
}
@@ -258,9 +258,9 @@ class SpacePresenterTest {
val state = awaitItem()
assertThat(state.topicViewerState).isEqualTo(TopicViewerState.Hidden)
advanceUntilIdle()
state.eventSink(SpaceEvents.ShowTopicViewer("topic"))
state.eventSink(SpaceEvent.ShowTopicViewer("topic"))
assertThat(awaitItem().topicViewerState).isEqualTo(TopicViewerState.Shown("topic"))
state.eventSink(SpaceEvents.HideTopicViewer)
state.eventSink(SpaceEvent.HideTopicViewer)
assertThat(awaitItem().topicViewerState).isEqualTo(TopicViewerState.Hidden)
}
}
@@ -300,14 +300,14 @@ class SpacePresenterTest {
val state = awaitItem()
assertThat(state.joinActions[A_ROOM_ID_2]).isNull()
if (acceptInvite) {
state.eventSink(SpaceEvents.AcceptInvite(anInvitedRoom))
state.eventSink(SpaceEvent.AcceptInvite(anInvitedRoom))
eventRecorder.assertSingle(
AcceptDeclineInviteEvent.AcceptInvite(
invite = anInvitedRoom.toInviteData(),
)
)
} else {
state.eventSink(SpaceEvents.DeclineInvite(anInvitedRoom))
state.eventSink(SpaceEvent.DeclineInvite(anInvitedRoom))
eventRecorder.assertSingle(
AcceptDeclineInviteEvent.DeclineInvite(
invite = anInvitedRoom.toInviteData(),
@@ -325,7 +325,7 @@ class SpacePresenterTest {
presenter.test {
val state = awaitItem()
assertThat(state.isManageMode).isFalse()
state.eventSink(SpaceEvents.EnterManageMode)
state.eventSink(SpaceEvent.EnterManageMode)
val manageModeState = awaitItem()
assertThat(manageModeState.isManageMode).isTrue()
assertThat(manageModeState.selectedRoomIds).isEmpty()
@@ -342,9 +342,9 @@ class SpacePresenterTest {
val presenter = createSpacePresenter(spaceRoomList = fakeSpaceRoomList)
presenter.test {
val initialState = awaitItem()
initialState.eventSink(SpaceEvents.EnterManageMode)
initialState.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
initialState.eventSink(SpaceEvents.ExitManageMode)
initialState.eventSink(SpaceEvent.EnterManageMode)
initialState.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
initialState.eventSink(SpaceEvent.ExitManageMode)
advanceUntilIdle()
val finalState = expectMostRecentItem()
assertThat(finalState.isManageMode).isFalse()
@@ -359,13 +359,13 @@ class SpacePresenterTest {
val presenter = createSpacePresenter()
presenter.test {
val initialState = awaitItem()
initialState.eventSink(SpaceEvents.EnterManageMode)
initialState.eventSink(SpaceEvent.EnterManageMode)
// Select a room
initialState.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
initialState.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
var latestState = expectMostRecentItem()
assertThat(latestState.selectedRoomIds).containsExactly(A_ROOM_ID)
// Deselect the room
latestState.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
latestState.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
latestState = expectMostRecentItem()
assertThat(latestState.selectedRoomIds).isEmpty()
}
@@ -397,10 +397,10 @@ class SpacePresenterTest {
advanceUntilIdle()
val stateWithChildren = awaitItem()
assertThat(stateWithChildren.children).hasSize(1)
stateWithChildren.eventSink(SpaceEvents.EnterManageMode)
stateWithChildren.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvents.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvents.ConfirmRoomRemoval)
stateWithChildren.eventSink(SpaceEvent.EnterManageMode)
stateWithChildren.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvent.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvent.ConfirmRoomRemoval)
advanceUntilIdle()
val successState = expectMostRecentItem()
assertThat(successState.removeRoomsAction).isEqualTo(AsyncAction.Success(Unit))
@@ -442,11 +442,11 @@ class SpacePresenterTest {
advanceUntilIdle()
val stateWithChildren = awaitItem()
assertThat(stateWithChildren.children).hasSize(2)
stateWithChildren.eventSink(SpaceEvents.EnterManageMode)
stateWithChildren.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID_2))
stateWithChildren.eventSink(SpaceEvents.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvents.ConfirmRoomRemoval)
stateWithChildren.eventSink(SpaceEvent.EnterManageMode)
stateWithChildren.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID_2))
stateWithChildren.eventSink(SpaceEvent.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvent.ConfirmRoomRemoval)
advanceUntilIdle()
val failureState = expectMostRecentItem()
assertThat(failureState.removeRoomsAction.isFailure()).isTrue()
@@ -492,16 +492,16 @@ class SpacePresenterTest {
awaitItem() // Initial empty state
advanceUntilIdle()
val stateWithChildren = awaitItem()
stateWithChildren.eventSink(SpaceEvents.EnterManageMode)
stateWithChildren.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID_2))
stateWithChildren.eventSink(SpaceEvents.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvents.ConfirmRoomRemoval)
stateWithChildren.eventSink(SpaceEvent.EnterManageMode)
stateWithChildren.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID_2))
stateWithChildren.eventSink(SpaceEvent.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvent.ConfirmRoomRemoval)
advanceUntilIdle()
val failureState = expectMostRecentItem()
assertThat(failureState.removeRoomsAction.isFailure()).isTrue()
// Exit manage mode after partial failure - reset should be called
failureState.eventSink(SpaceEvents.ExitManageMode)
failureState.eventSink(SpaceEvent.ExitManageMode)
advanceUntilIdle()
expectMostRecentItem()
assert(resetResult).isCalledOnce()
@@ -530,7 +530,7 @@ class SpacePresenterTest {
// Both room and space visible initially
assertThat(stateWithChildren.children).hasSize(2)
assertThat(stateWithChildren.isManageMode).isFalse()
stateWithChildren.eventSink(SpaceEvents.EnterManageMode)
stateWithChildren.eventSink(SpaceEvent.EnterManageMode)
val manageModeState = expectMostRecentItem()
// Only rooms visible in manage mode
assertThat(manageModeState.children).hasSize(1)
@@ -648,12 +648,12 @@ class SpacePresenterTest {
awaitItem() // Initial empty state
advanceUntilIdle()
val stateWithChildren = awaitItem()
stateWithChildren.eventSink(SpaceEvents.EnterManageMode)
stateWithChildren.eventSink(SpaceEvent.EnterManageMode)
// Select both rooms for removal
stateWithChildren.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvents.ToggleRoomSelection(A_ROOM_ID_2))
stateWithChildren.eventSink(SpaceEvents.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvents.ConfirmRoomRemoval)
stateWithChildren.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
stateWithChildren.eventSink(SpaceEvent.ToggleRoomSelection(A_ROOM_ID_2))
stateWithChildren.eventSink(SpaceEvent.RemoveSelectedRooms)
stateWithChildren.eventSink(SpaceEvent.ConfirmRoomRemoval)
advanceUntilIdle()
val failureState = expectMostRecentItem()
assertThat(failureState.removeRoomsAction.isFailure()).isTrue()
@@ -42,7 +42,7 @@ import org.robolectric.annotation.Config
class SpaceViewTest : RobolectricTest() {
@Test
fun `clicking on back invokes the expected callback`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<SpaceEvents>(expectEvents = false)
val eventsRecorder = EventsRecorder<SpaceEvent>(expectEvents = false)
ensureCalledOnce {
setSpaceView(
aSpaceState(
@@ -58,7 +58,7 @@ class SpaceViewTest : RobolectricTest() {
@Test
fun `clicking on a room name invokes the expected callback`() = runAndroidComposeUiTest {
val aSpaceRoom = aSpaceRoom(roomId = A_ROOM_ID, displayName = A_ROOM_NAME)
val eventsRecorder = EventsRecorder<SpaceEvents>(expectEvents = false)
val eventsRecorder = EventsRecorder<SpaceEvent>(expectEvents = false)
ensureCalledOnceWithParam(aSpaceRoom) {
setSpaceView(
aSpaceState(
@@ -75,7 +75,7 @@ class SpaceViewTest : RobolectricTest() {
@Test
fun `clicking on Join room emits the expected Event`() = runAndroidComposeUiTest {
val aSpaceRoom = aSpaceRoom(roomId = A_ROOM_ID, state = null)
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
children = listOf(aSpaceRoom),
@@ -84,14 +84,14 @@ class SpaceViewTest : RobolectricTest() {
),
)
clickOn(CommonStrings.action_join)
eventsRecorder.assertSingle(SpaceEvents.Join(aSpaceRoom))
eventsRecorder.assertSingle(SpaceEvent.Join(aSpaceRoom))
}
@Config(qualifiers = "h1024dp")
@Test
fun `clicking on accept invite emits the expected Event`() = runAndroidComposeUiTest {
val aSpaceRoom = aSpaceRoom(roomId = A_ROOM_ID, state = CurrentUserMembership.INVITED)
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
hasMoreToLoad = false,
@@ -100,14 +100,14 @@ class SpaceViewTest : RobolectricTest() {
),
)
clickOn(CommonStrings.action_accept)
eventsRecorder.assertSingle(SpaceEvents.AcceptInvite(aSpaceRoom))
eventsRecorder.assertSingle(SpaceEvent.AcceptInvite(aSpaceRoom))
}
@Config(qualifiers = "h1024dp")
@Test
fun `clicking on decline invite emits the expected Event`() = runAndroidComposeUiTest {
val aSpaceRoom = aSpaceRoom(roomId = A_ROOM_ID, state = CurrentUserMembership.INVITED)
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
hasMoreToLoad = false,
@@ -116,13 +116,13 @@ class SpaceViewTest : RobolectricTest() {
),
)
clickOn(CommonStrings.action_decline)
eventsRecorder.assertSingle(SpaceEvents.DeclineInvite(aSpaceRoom))
eventsRecorder.assertSingle(SpaceEvent.DeclineInvite(aSpaceRoom))
}
@Config(qualifiers = "h1024dp")
@Test
fun `clicking on topic emits the expected Event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
spaceInfo = aRoomInfo(topic = A_ROOM_TOPIC),
@@ -131,12 +131,12 @@ class SpaceViewTest : RobolectricTest() {
)
)
onNodeWithText(A_ROOM_TOPIC).performClick()
eventsRecorder.assertSingle(SpaceEvents.ShowTopicViewer(A_ROOM_TOPIC))
eventsRecorder.assertSingle(SpaceEvent.ShowTopicViewer(A_ROOM_TOPIC))
}
@Test
fun `clicking back in manage mode emits ExitManageMode event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
hasMoreToLoad = false,
@@ -145,13 +145,13 @@ class SpaceViewTest : RobolectricTest() {
)
)
pressBackKey()
eventsRecorder.assertSingle(SpaceEvents.ExitManageMode)
eventsRecorder.assertSingle(SpaceEvent.ExitManageMode)
}
@Test
fun `clicking on room in manage mode emits ToggleRoomSelection event`() = runAndroidComposeUiTest {
val aSpaceRoom = aSpaceRoom(roomId = A_ROOM_ID, displayName = A_ROOM_NAME)
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
children = listOf(aSpaceRoom),
@@ -161,12 +161,12 @@ class SpaceViewTest : RobolectricTest() {
)
)
onNodeWithText(A_ROOM_NAME).performClick()
eventsRecorder.assertSingle(SpaceEvents.ToggleRoomSelection(A_ROOM_ID))
eventsRecorder.assertSingle(SpaceEvent.ToggleRoomSelection(A_ROOM_ID))
}
@Test
fun `clicking remove button emits RemoveSelectedRooms event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
children = listOf(aSpaceRoom(roomId = A_ROOM_ID)),
@@ -177,13 +177,13 @@ class SpaceViewTest : RobolectricTest() {
)
)
clickOn(CommonStrings.action_remove)
eventsRecorder.assertSingle(SpaceEvents.RemoveSelectedRooms)
eventsRecorder.assertSingle(SpaceEvent.RemoveSelectedRooms)
}
@Config(qualifiers = "h1024dp")
@Test
fun `clicking confirm in removal dialog emits ConfirmRoomRemoval event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<SpaceEvents>()
val eventsRecorder = EventsRecorder<SpaceEvent>()
setSpaceView(
aSpaceState(
children = listOf(aSpaceRoom(roomId = A_ROOM_ID)),
@@ -196,7 +196,7 @@ class SpaceViewTest : RobolectricTest() {
)
// Click on the Remove button in the confirmation dialog
clickOn(CommonStrings.action_remove, inDialog = true)
eventsRecorder.assertSingle(SpaceEvents.ConfirmRoomRemoval)
eventsRecorder.assertSingle(SpaceEvent.ConfirmRoomRemoval)
}
@Test