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