mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
JoinRoomEvents -> JoinRoomEvent
This commit is contained in:
+11
-11
@@ -10,15 +10,15 @@ package io.element.android.features.joinroom.impl
|
|||||||
|
|
||||||
import io.element.android.features.invite.api.InviteData
|
import io.element.android.features.invite.api.InviteData
|
||||||
|
|
||||||
sealed interface JoinRoomEvents {
|
sealed interface JoinRoomEvent {
|
||||||
data object RetryFetchingContent : JoinRoomEvents
|
data object RetryFetchingContent : JoinRoomEvent
|
||||||
data object DismissErrorAndHideContent : JoinRoomEvents
|
data object DismissErrorAndHideContent : JoinRoomEvent
|
||||||
data object JoinRoom : JoinRoomEvents
|
data object JoinRoom : JoinRoomEvent
|
||||||
data object KnockRoom : JoinRoomEvents
|
data object KnockRoom : JoinRoomEvent
|
||||||
data object ForgetRoom : JoinRoomEvents
|
data object ForgetRoom : JoinRoomEvent
|
||||||
data class CancelKnock(val requiresConfirmation: Boolean) : JoinRoomEvents
|
data class CancelKnock(val requiresConfirmation: Boolean) : JoinRoomEvent
|
||||||
data class UpdateKnockMessage(val message: String) : JoinRoomEvents
|
data class UpdateKnockMessage(val message: String) : JoinRoomEvent
|
||||||
data object ClearActionStates : JoinRoomEvents
|
data object ClearActionStates : JoinRoomEvent
|
||||||
data class AcceptInvite(val inviteData: InviteData) : JoinRoomEvents
|
data class AcceptInvite(val inviteData: InviteData) : JoinRoomEvent
|
||||||
data class DeclineInvite(val inviteData: InviteData, val blockUser: Boolean) : JoinRoomEvents
|
data class DeclineInvite(val inviteData: InviteData, val blockUser: Boolean) : JoinRoomEvent
|
||||||
}
|
}
|
||||||
+11
-11
@@ -151,37 +151,37 @@ class JoinRoomPresenter(
|
|||||||
contentState.markRoomInviteAsSeen()
|
contentState.markRoomInviteAsSeen()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun handleEvent(event: JoinRoomEvents) {
|
fun handleEvent(event: JoinRoomEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
JoinRoomEvents.JoinRoom -> coroutineScope.joinRoom(joinAction)
|
JoinRoomEvent.JoinRoom -> coroutineScope.joinRoom(joinAction)
|
||||||
is JoinRoomEvents.KnockRoom -> coroutineScope.knockRoom(knockAction, knockMessage)
|
is JoinRoomEvent.KnockRoom -> coroutineScope.knockRoom(knockAction, knockMessage)
|
||||||
is JoinRoomEvents.AcceptInvite -> {
|
is JoinRoomEvent.AcceptInvite -> {
|
||||||
acceptDeclineInviteState.eventSink(
|
acceptDeclineInviteState.eventSink(
|
||||||
AcceptDeclineInviteEvent.AcceptInvite(event.inviteData)
|
AcceptDeclineInviteEvent.AcceptInvite(event.inviteData)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
is JoinRoomEvents.DeclineInvite -> {
|
is JoinRoomEvent.DeclineInvite -> {
|
||||||
acceptDeclineInviteState.eventSink(
|
acceptDeclineInviteState.eventSink(
|
||||||
AcceptDeclineInviteEvent.DeclineInvite(invite = event.inviteData, blockUser = event.blockUser, shouldConfirm = true)
|
AcceptDeclineInviteEvent.DeclineInvite(invite = event.inviteData, blockUser = event.blockUser, shouldConfirm = true)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
is JoinRoomEvents.CancelKnock -> coroutineScope.cancelKnockRoom(event.requiresConfirmation, cancelKnockAction)
|
is JoinRoomEvent.CancelKnock -> coroutineScope.cancelKnockRoom(event.requiresConfirmation, cancelKnockAction)
|
||||||
JoinRoomEvents.RetryFetchingContent -> {
|
JoinRoomEvent.RetryFetchingContent -> {
|
||||||
retryCount++
|
retryCount++
|
||||||
}
|
}
|
||||||
JoinRoomEvents.ClearActionStates -> {
|
JoinRoomEvent.ClearActionStates -> {
|
||||||
knockAction.value = AsyncAction.Uninitialized
|
knockAction.value = AsyncAction.Uninitialized
|
||||||
joinAction.value = AsyncAction.Uninitialized
|
joinAction.value = AsyncAction.Uninitialized
|
||||||
cancelKnockAction.value = AsyncAction.Uninitialized
|
cancelKnockAction.value = AsyncAction.Uninitialized
|
||||||
forgetRoomAction.value = AsyncAction.Uninitialized
|
forgetRoomAction.value = AsyncAction.Uninitialized
|
||||||
}
|
}
|
||||||
is JoinRoomEvents.UpdateKnockMessage -> {
|
is JoinRoomEvent.UpdateKnockMessage -> {
|
||||||
knockMessage = event.message.take(MAX_KNOCK_MESSAGE_LENGTH)
|
knockMessage = event.message.take(MAX_KNOCK_MESSAGE_LENGTH)
|
||||||
}
|
}
|
||||||
JoinRoomEvents.DismissErrorAndHideContent -> {
|
JoinRoomEvent.DismissErrorAndHideContent -> {
|
||||||
isDismissingContent = true
|
isDismissingContent = true
|
||||||
}
|
}
|
||||||
JoinRoomEvents.ForgetRoom -> coroutineScope.forgetRoom(forgetRoomAction)
|
JoinRoomEvent.ForgetRoom -> coroutineScope.forgetRoom(forgetRoomAction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ data class JoinRoomState(
|
|||||||
val knockMessage: String,
|
val knockMessage: String,
|
||||||
val hideInviteAvatars: Boolean,
|
val hideInviteAvatars: Boolean,
|
||||||
val canReportRoom: Boolean,
|
val canReportRoom: Boolean,
|
||||||
val eventSink: (JoinRoomEvents) -> Unit
|
val eventSink: (JoinRoomEvent) -> Unit
|
||||||
) {
|
) {
|
||||||
val isJoinActionUnauthorized = joinAction is AsyncAction.Failure && joinAction.error is JoinRoom.Failures.UnauthorizedJoin
|
val isJoinActionUnauthorized = joinAction is AsyncAction.Failure && joinAction.error is JoinRoom.Failures.UnauthorizedJoin
|
||||||
val joinAuthorisationStatus = when (contentState) {
|
val joinAuthorisationStatus = when (contentState) {
|
||||||
|
|||||||
+1
-1
@@ -207,7 +207,7 @@ fun aJoinRoomState(
|
|||||||
knockMessage: String = "",
|
knockMessage: String = "",
|
||||||
hideInviteAvatars: Boolean = false,
|
hideInviteAvatars: Boolean = false,
|
||||||
canReportRoom: Boolean = true,
|
canReportRoom: Boolean = true,
|
||||||
eventSink: (JoinRoomEvents) -> Unit = {}
|
eventSink: (JoinRoomEvent) -> Unit = {}
|
||||||
) = JoinRoomState(
|
) = JoinRoomState(
|
||||||
roomIdOrAlias = roomIdOrAlias,
|
roomIdOrAlias = roomIdOrAlias,
|
||||||
contentState = contentState,
|
contentState = contentState,
|
||||||
|
|||||||
+15
-15
@@ -115,33 +115,33 @@ fun JoinRoomView(
|
|||||||
contentState = state.contentState,
|
contentState = state.contentState,
|
||||||
knockMessage = state.knockMessage,
|
knockMessage = state.knockMessage,
|
||||||
hideAvatarsImages = state.hideAvatarsImages,
|
hideAvatarsImages = state.hideAvatarsImages,
|
||||||
onKnockMessageUpdate = { state.eventSink(JoinRoomEvents.UpdateKnockMessage(it)) },
|
onKnockMessageUpdate = { state.eventSink(JoinRoomEvent.UpdateKnockMessage(it)) },
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
footer = {
|
footer = {
|
||||||
JoinRoomFooter(
|
JoinRoomFooter(
|
||||||
joinAuthorisationStatus = state.joinAuthorisationStatus,
|
joinAuthorisationStatus = state.joinAuthorisationStatus,
|
||||||
onAcceptInvite = { inviteData ->
|
onAcceptInvite = { inviteData ->
|
||||||
state.eventSink(JoinRoomEvents.AcceptInvite(inviteData))
|
state.eventSink(JoinRoomEvent.AcceptInvite(inviteData))
|
||||||
},
|
},
|
||||||
onDeclineInvite = { inviteData, blockUser ->
|
onDeclineInvite = { inviteData, blockUser ->
|
||||||
if (state.canReportRoom && blockUser) {
|
if (state.canReportRoom && blockUser) {
|
||||||
onDeclineInviteAndBlockUser(inviteData)
|
onDeclineInviteAndBlockUser(inviteData)
|
||||||
} else {
|
} else {
|
||||||
state.eventSink(JoinRoomEvents.DeclineInvite(inviteData, blockUser = blockUser))
|
state.eventSink(JoinRoomEvent.DeclineInvite(inviteData, blockUser = blockUser))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onJoinRoom = {
|
onJoinRoom = {
|
||||||
state.eventSink(JoinRoomEvents.JoinRoom)
|
state.eventSink(JoinRoomEvent.JoinRoom)
|
||||||
},
|
},
|
||||||
onKnockRoom = {
|
onKnockRoom = {
|
||||||
state.eventSink(JoinRoomEvents.KnockRoom)
|
state.eventSink(JoinRoomEvent.KnockRoom)
|
||||||
},
|
},
|
||||||
onCancelKnock = {
|
onCancelKnock = {
|
||||||
state.eventSink(JoinRoomEvents.CancelKnock(requiresConfirmation = true))
|
state.eventSink(JoinRoomEvent.CancelKnock(requiresConfirmation = true))
|
||||||
},
|
},
|
||||||
onForgetRoom = {
|
onForgetRoom = {
|
||||||
state.eventSink(JoinRoomEvents.ForgetRoom)
|
state.eventSink(JoinRoomEvent.ForgetRoom)
|
||||||
},
|
},
|
||||||
onGoBack = onBackClick,
|
onGoBack = onBackClick,
|
||||||
)
|
)
|
||||||
@@ -152,9 +152,9 @@ fun JoinRoomView(
|
|||||||
RetryDialog(
|
RetryDialog(
|
||||||
title = stringResource(R.string.screen_join_room_loading_alert_title),
|
title = stringResource(R.string.screen_join_room_loading_alert_title),
|
||||||
content = stringResource(CommonStrings.error_network_or_server_issue),
|
content = stringResource(CommonStrings.error_network_or_server_issue),
|
||||||
onRetry = { state.eventSink(JoinRoomEvents.RetryFetchingContent) },
|
onRetry = { state.eventSink(JoinRoomEvent.RetryFetchingContent) },
|
||||||
onDismiss = {
|
onDismiss = {
|
||||||
state.eventSink(JoinRoomEvents.DismissErrorAndHideContent)
|
state.eventSink(JoinRoomEvent.DismissErrorAndHideContent)
|
||||||
onBackClick()
|
onBackClick()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -166,7 +166,7 @@ fun JoinRoomView(
|
|||||||
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
||||||
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
||||||
onSuccess = { onJoinSuccess() },
|
onSuccess = { onJoinSuccess() },
|
||||||
onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) },
|
onErrorDismiss = { state.eventSink(JoinRoomEvent.ClearActionStates) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
AsyncActionView(
|
AsyncActionView(
|
||||||
@@ -174,19 +174,19 @@ fun JoinRoomView(
|
|||||||
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
||||||
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
||||||
onSuccess = { onKnockSuccess() },
|
onSuccess = { onKnockSuccess() },
|
||||||
onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) },
|
onErrorDismiss = { state.eventSink(JoinRoomEvent.ClearActionStates) },
|
||||||
)
|
)
|
||||||
AsyncActionView(
|
AsyncActionView(
|
||||||
async = state.forgetAction,
|
async = state.forgetAction,
|
||||||
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
||||||
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
||||||
onSuccess = { onForgetSuccess() },
|
onSuccess = { onForgetSuccess() },
|
||||||
onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) },
|
onErrorDismiss = { state.eventSink(JoinRoomEvent.ClearActionStates) },
|
||||||
)
|
)
|
||||||
AsyncActionView(
|
AsyncActionView(
|
||||||
async = state.cancelKnockAction,
|
async = state.cancelKnockAction,
|
||||||
onSuccess = { onCancelKnockSuccess() },
|
onSuccess = { onCancelKnockSuccess() },
|
||||||
onErrorDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) },
|
onErrorDismiss = { state.eventSink(JoinRoomEvent.ClearActionStates) },
|
||||||
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
errorTitle = { stringResource(CommonStrings.common_something_went_wrong) },
|
||||||
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
errorMessage = { stringResource(CommonStrings.error_network_or_server_issue) },
|
||||||
confirmationDialog = {
|
confirmationDialog = {
|
||||||
@@ -195,8 +195,8 @@ fun JoinRoomView(
|
|||||||
title = stringResource(R.string.screen_join_room_cancel_knock_alert_title),
|
title = stringResource(R.string.screen_join_room_cancel_knock_alert_title),
|
||||||
submitText = stringResource(R.string.screen_join_room_cancel_knock_alert_confirmation),
|
submitText = stringResource(R.string.screen_join_room_cancel_knock_alert_confirmation),
|
||||||
cancelText = stringResource(CommonStrings.action_no),
|
cancelText = stringResource(CommonStrings.action_no),
|
||||||
onSubmitClick = { state.eventSink(JoinRoomEvents.CancelKnock(requiresConfirmation = false)) },
|
onSubmitClick = { state.eventSink(JoinRoomEvent.CancelKnock(requiresConfirmation = false)) },
|
||||||
onDismiss = { state.eventSink(JoinRoomEvents.ClearActionStates) },
|
onDismiss = { state.eventSink(JoinRoomEvent.ClearActionStates) },
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|||||||
+14
-14
@@ -388,8 +388,8 @@ class JoinRoomPresenterTest {
|
|||||||
skipItems(1)
|
skipItems(1)
|
||||||
|
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.AcceptInvite(inviteData))
|
state.eventSink(JoinRoomEvent.AcceptInvite(inviteData))
|
||||||
state.eventSink(JoinRoomEvents.DeclineInvite(inviteData, false))
|
state.eventSink(JoinRoomEvent.DeclineInvite(inviteData, false))
|
||||||
|
|
||||||
assert(eventSinkRecorder)
|
assert(eventSinkRecorder)
|
||||||
.isCalledExactly(2)
|
.isCalledExactly(2)
|
||||||
@@ -422,7 +422,7 @@ class JoinRoomPresenterTest {
|
|||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.JoinRoom)
|
state.eventSink(JoinRoomEvent.JoinRoom)
|
||||||
}
|
}
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.joinAction).isEqualTo(AsyncAction.Loading)
|
assertThat(state.joinAction).isEqualTo(AsyncAction.Loading)
|
||||||
@@ -453,14 +453,14 @@ class JoinRoomPresenterTest {
|
|||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.JoinRoom)
|
state.eventSink(JoinRoomEvent.JoinRoom)
|
||||||
}
|
}
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.joinAction).isEqualTo(AsyncAction.Loading)
|
assertThat(state.joinAction).isEqualTo(AsyncAction.Loading)
|
||||||
}
|
}
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.joinAction).isEqualTo(AsyncAction.Failure(AN_EXCEPTION))
|
assertThat(state.joinAction).isEqualTo(AsyncAction.Failure(AN_EXCEPTION))
|
||||||
state.eventSink(JoinRoomEvents.ClearActionStates)
|
state.eventSink(JoinRoomEvent.ClearActionStates)
|
||||||
}
|
}
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.joinAction).isEqualTo(AsyncAction.Uninitialized)
|
assertThat(state.joinAction).isEqualTo(AsyncAction.Uninitialized)
|
||||||
@@ -480,7 +480,7 @@ class JoinRoomPresenterTest {
|
|||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.JoinRoom)
|
state.eventSink(JoinRoomEvent.JoinRoom)
|
||||||
}
|
}
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.joinAction).isEqualTo(AsyncAction.Loading)
|
assertThat(state.joinAction).isEqualTo(AsyncAction.Loading)
|
||||||
@@ -683,17 +683,17 @@ class JoinRoomPresenterTest {
|
|||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.UpdateKnockMessage(knockMessage))
|
state.eventSink(JoinRoomEvent.UpdateKnockMessage(knockMessage))
|
||||||
}
|
}
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.KnockRoom)
|
state.eventSink(JoinRoomEvent.KnockRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
assertThat(awaitItem().knockAction).isEqualTo(AsyncAction.Loading)
|
assertThat(awaitItem().knockAction).isEqualTo(AsyncAction.Loading)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.knockAction).isEqualTo(AsyncAction.Success(Unit))
|
assertThat(state.knockAction).isEqualTo(AsyncAction.Success(Unit))
|
||||||
fakeKnockRoom.lambda = knockRoomFailure
|
fakeKnockRoom.lambda = knockRoomFailure
|
||||||
state.eventSink(JoinRoomEvents.KnockRoom)
|
state.eventSink(JoinRoomEvent.KnockRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
assertThat(awaitItem().knockAction).isEqualTo(AsyncAction.Loading)
|
assertThat(awaitItem().knockAction).isEqualTo(AsyncAction.Loading)
|
||||||
@@ -731,17 +731,17 @@ class JoinRoomPresenterTest {
|
|||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.CancelKnock(true))
|
state.eventSink(JoinRoomEvent.CancelKnock(true))
|
||||||
}
|
}
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.cancelKnockAction).isEqualTo(AsyncAction.ConfirmingNoParams)
|
assertThat(state.cancelKnockAction).isEqualTo(AsyncAction.ConfirmingNoParams)
|
||||||
state.eventSink(JoinRoomEvents.CancelKnock(false))
|
state.eventSink(JoinRoomEvent.CancelKnock(false))
|
||||||
}
|
}
|
||||||
assertThat(awaitItem().cancelKnockAction).isEqualTo(AsyncAction.Loading)
|
assertThat(awaitItem().cancelKnockAction).isEqualTo(AsyncAction.Loading)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.cancelKnockAction).isEqualTo(AsyncAction.Success(Unit))
|
assertThat(state.cancelKnockAction).isEqualTo(AsyncAction.Success(Unit))
|
||||||
cancelKnockRoom.lambda = cancelKnockRoomFailure
|
cancelKnockRoom.lambda = cancelKnockRoomFailure
|
||||||
state.eventSink(JoinRoomEvents.CancelKnock(false))
|
state.eventSink(JoinRoomEvent.CancelKnock(false))
|
||||||
}
|
}
|
||||||
assertThat(awaitItem().cancelKnockAction).isEqualTo(AsyncAction.Loading)
|
assertThat(awaitItem().cancelKnockAction).isEqualTo(AsyncAction.Loading)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
@@ -778,14 +778,14 @@ class JoinRoomPresenterTest {
|
|||||||
presenter.test {
|
presenter.test {
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
state.eventSink(JoinRoomEvents.ForgetRoom)
|
state.eventSink(JoinRoomEvent.ForgetRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
assertThat(awaitItem().forgetAction).isEqualTo(AsyncAction.Loading)
|
assertThat(awaitItem().forgetAction).isEqualTo(AsyncAction.Loading)
|
||||||
awaitItem().also { state ->
|
awaitItem().also { state ->
|
||||||
assertThat(state.forgetAction).isEqualTo(AsyncAction.Success(Unit))
|
assertThat(state.forgetAction).isEqualTo(AsyncAction.Success(Unit))
|
||||||
fakeForgetRoom.lambda = forgetRoomFailure
|
fakeForgetRoom.lambda = forgetRoomFailure
|
||||||
state.eventSink(JoinRoomEvents.ForgetRoom)
|
state.eventSink(JoinRoomEvent.ForgetRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
assertThat(awaitItem().forgetAction).isEqualTo(AsyncAction.Loading)
|
assertThat(awaitItem().forgetAction).isEqualTo(AsyncAction.Loading)
|
||||||
|
|||||||
+26
-26
@@ -34,7 +34,7 @@ import org.junit.Test
|
|||||||
class JoinRoomViewTest : RobolectricTest() {
|
class JoinRoomViewTest : RobolectricTest() {
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on back invoke the expected callback`() = runAndroidComposeUiTest {
|
fun `clicking on back invoke the expected callback`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>(expectEvents = false)
|
||||||
ensureCalledOnce {
|
ensureCalledOnce {
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
@@ -48,7 +48,7 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on Join room on CanJoin room emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on Join room on CanJoin room emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanJoin),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanJoin),
|
||||||
@@ -56,12 +56,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(R.string.screen_join_room_join_action)
|
clickOn(R.string.screen_join_room_join_action)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.JoinRoom)
|
eventsRecorder.assertSingle(JoinRoomEvent.JoinRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on Knock room on CanKnock room emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on Knock room on CanKnock room emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanKnock),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanKnock),
|
||||||
@@ -70,12 +70,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(R.string.screen_join_room_knock_action)
|
clickOn(R.string.screen_join_room_knock_action)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.KnockRoom)
|
eventsRecorder.assertSingle(JoinRoomEvent.KnockRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on closing Knock error emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on closing Knock error emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanKnock),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanKnock),
|
||||||
@@ -84,12 +84,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(CommonStrings.action_ok)
|
clickOn(CommonStrings.action_ok)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.ClearActionStates)
|
eventsRecorder.assertSingle(JoinRoomEvent.ClearActionStates)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on cancel knock request emit the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on cancel knock request emit the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsKnocked),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsKnocked),
|
||||||
@@ -97,12 +97,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(R.string.screen_join_room_cancel_knock_action)
|
clickOn(R.string.screen_join_room_cancel_knock_action)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.CancelKnock(true))
|
eventsRecorder.assertSingle(JoinRoomEvent.CancelKnock(true))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on closing Cancel Knock error emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on closing Cancel Knock error emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsKnocked),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsKnocked),
|
||||||
@@ -111,12 +111,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(CommonStrings.action_ok)
|
clickOn(CommonStrings.action_ok)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.ClearActionStates)
|
eventsRecorder.assertSingle(JoinRoomEvent.ClearActionStates)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on closing Join error emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on closing Join error emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanKnock),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.CanKnock),
|
||||||
@@ -125,12 +125,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(CommonStrings.action_ok)
|
clickOn(CommonStrings.action_ok)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.ClearActionStates)
|
eventsRecorder.assertSingle(JoinRoomEvent.ClearActionStates)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `when joining room is successful, the expected callback is invoked`() = runAndroidComposeUiTest {
|
fun `when joining room is successful, the expected callback is invoked`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>(expectEvents = false)
|
||||||
ensureCalledOnce {
|
ensureCalledOnce {
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
@@ -144,7 +144,7 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on Accept when JoinAuthorisationStatus is IsInvited emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on Accept when JoinAuthorisationStatus is IsInvited emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
val inviteData = anInviteData()
|
val inviteData = anInviteData()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
@@ -153,12 +153,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(CommonStrings.action_accept)
|
clickOn(CommonStrings.action_accept)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.AcceptInvite(inviteData))
|
eventsRecorder.assertSingle(JoinRoomEvent.AcceptInvite(inviteData))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on Decline when JoinAuthorisationStatus is IsInvited emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on Decline when JoinAuthorisationStatus is IsInvited emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
val inviteData = anInviteData()
|
val inviteData = anInviteData()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
@@ -167,13 +167,13 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(CommonStrings.action_decline)
|
clickOn(CommonStrings.action_decline)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.DeclineInvite(inviteData, false))
|
eventsRecorder.assertSingle(JoinRoomEvent.DeclineInvite(inviteData, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on Decline and block when JoinAuthorisationStatus is IsInvited and can report room, the expected callback is invoked`() {
|
fun `clicking on Decline and block when JoinAuthorisationStatus is IsInvited and can report room, the expected callback is invoked`() {
|
||||||
runAndroidComposeUiTest {
|
runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>(expectEvents = false)
|
||||||
val inviteData = anInviteData()
|
val inviteData = anInviteData()
|
||||||
val joinRoomState = aJoinRoomState(
|
val joinRoomState = aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsInvited(inviteData, aRoomMember().toInviteSender())),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsInvited(inviteData, aRoomMember().toInviteSender())),
|
||||||
@@ -192,7 +192,7 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on Decline and block when JoinAuthorisationStatus is IsInvited and cant report room, emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on Decline and block when JoinAuthorisationStatus is IsInvited and cant report room, emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
val inviteData = anInviteData()
|
val inviteData = anInviteData()
|
||||||
val joinRoomState = aJoinRoomState(
|
val joinRoomState = aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsInvited(inviteData, aRoomMember().toInviteSender())),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsInvited(inviteData, aRoomMember().toInviteSender())),
|
||||||
@@ -201,12 +201,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
)
|
)
|
||||||
setJoinRoomView(state = joinRoomState)
|
setJoinRoomView(state = joinRoomState)
|
||||||
clickOn(R.string.screen_join_room_decline_and_block_button_title)
|
clickOn(R.string.screen_join_room_decline_and_block_button_title)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.DeclineInvite(inviteData, true))
|
eventsRecorder.assertSingle(JoinRoomEvent.DeclineInvite(inviteData, true))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on Retry when an error occurs emits the expected Event`() = runAndroidComposeUiTest {
|
fun `clicking on Retry when an error occurs emits the expected Event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aFailureContentState(),
|
contentState = aFailureContentState(),
|
||||||
@@ -214,12 +214,12 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(CommonStrings.action_retry)
|
clickOn(CommonStrings.action_retry)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.RetryFetchingContent)
|
eventsRecorder.assertSingle(JoinRoomEvent.RetryFetchingContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on ok when user is unauthorized the expected callback`() = runAndroidComposeUiTest {
|
fun `clicking on ok when user is unauthorized the expected callback`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>(expectEvents = false)
|
||||||
ensureCalledOnce {
|
ensureCalledOnce {
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
@@ -235,7 +235,7 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking on forget when user is banned invokes the expected callback`() = runAndroidComposeUiTest {
|
fun `clicking on forget when user is banned invokes the expected callback`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<JoinRoomEvents>()
|
val eventsRecorder = EventsRecorder<JoinRoomEvent>()
|
||||||
setJoinRoomView(
|
setJoinRoomView(
|
||||||
aJoinRoomState(
|
aJoinRoomState(
|
||||||
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsBanned(null, null)),
|
contentState = aLoadedContentState(joinAuthorisationStatus = JoinAuthorisationStatus.IsBanned(null, null)),
|
||||||
@@ -243,7 +243,7 @@ class JoinRoomViewTest : RobolectricTest() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
clickOn(R.string.screen_join_room_forget_action)
|
clickOn(R.string.screen_join_room_forget_action)
|
||||||
eventsRecorder.assertSingle(JoinRoomEvents.ForgetRoom)
|
eventsRecorder.assertSingle(JoinRoomEvent.ForgetRoom)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user