From c177d3de7b3309e66bc34f2be2ff48e405bfa0a5 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 12 Jun 2024 16:54:49 +0200 Subject: [PATCH] Sending queue : fix more tests as we have less methods available now. --- .../messages/impl/MessagesPresenterTest.kt | 39 ++++++------------- .../messages/impl/MessagesViewTest.kt | 18 --------- .../actionlist/ActionListPresenterTest.kt | 13 ++++++- 3 files changed, 23 insertions(+), 47 deletions(-) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index 2fcfe65dd1..7c47ba80e4 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -63,6 +63,7 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatch import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.TransactionId import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState @@ -444,41 +445,25 @@ class MessagesPresenterTest { @Test fun `present - handle action redact`() = runTest { val coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true) - val matrixRoom = FakeMatrixRoom() - val presenter = createMessagesPresenter(matrixRoom = matrixRoom, coroutineDispatchers = coroutineDispatchers) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - skipItems(1) - val initialState = awaitItem() - initialState.eventSink.invoke(MessagesEvents.HandleAction(TimelineItemAction.Redact, aMessageEvent())) - assertThat(matrixRoom.redactEventEventIdParam).isEqualTo(AN_EVENT_ID) - assertThat(awaitItem().actionListState.target).isEqualTo(ActionListState.Target.None) - } - } - @Test - fun `present - handle action redact message in error, in this case the message is just cancelled`() = runTest { - val coroutineDispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true) - val matrixRoom = FakeMatrixRoom() + val liveTimeline = FakeTimeline() + val matrixRoom = FakeMatrixRoom(liveTimeline = liveTimeline) + + val redactEventLambda = lambdaRecorder { _: EventId?, _: TransactionId?, _: String? -> Result.success(true) } + liveTimeline.redactEventLambda = redactEventLambda + val presenter = createMessagesPresenter(matrixRoom = matrixRoom, coroutineDispatchers = coroutineDispatchers) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { skipItems(1) val initialState = awaitItem() - initialState.eventSink.invoke( - MessagesEvents.HandleAction( - action = TimelineItemAction.Redact, - event = aMessageEvent( - transactionId = A_TRANSACTION_ID, - sendState = LocalEventSendState.SendingFailed("Failed to send message") - ) - ) - ) - assertThat(matrixRoom.cancelSendCount).isEqualTo(1) - assertThat(matrixRoom.redactEventEventIdParam).isNull() + val messageEvent = aMessageEvent() + initialState.eventSink.invoke(MessagesEvents.HandleAction(TimelineItemAction.Redact, messageEvent)) assertThat(awaitItem().actionListState.target).isEqualTo(ActionListState.Target.None) + assert(redactEventLambda) + .isCalledOnce() + .with(value(messageEvent.eventId), value(messageEvent.transactionId), value(null)) } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt index dd64f0b967..95fefd43b1 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt @@ -52,8 +52,6 @@ import io.element.android.features.messages.impl.timeline.components.customreact import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents import io.element.android.features.messages.impl.timeline.components.receipt.aReadReceiptData import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents -import io.element.android.features.messages.impl.timeline.components.retrysendmenu.RetrySendMenuEvents -import io.element.android.features.messages.impl.timeline.components.retrysendmenu.aRetrySendMenuState import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent import io.element.android.libraries.matrix.api.core.UserId @@ -145,22 +143,6 @@ class MessagesViewTest { callback.assertSuccess() } - @Test - fun `clicking on an Event timestamp in error emits the expected Event`() { - val eventsRecorder = EventsRecorder() - val state = aMessagesState( - retrySendMenuState = aRetrySendMenuState( - eventSink = eventsRecorder - ), - ) - val timelineItem = state.timelineState.timelineItems[1] as TimelineItem.Event - rule.setMessagesView( - state = state, - ) - rule.onAllNodesWithText(timelineItem.sentTime)[1].performClick() - eventsRecorder.assertSingle(RetrySendMenuEvents.EventSelected(timelineItem)) - } - @Test fun `long clicking on an Event emits the expected Event userHasPermissionToSendMessage`() { `long clicking on an Event emits the expected Event`(userHasPermissionToSendMessage = true) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt index 99b266dd82..ea18c0af39 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt @@ -62,7 +62,7 @@ class ActionListPresenterTest { presenter.present() }.test { val initialState = awaitItem() - val messageEvent = aMessageEvent(isMine = true, content = TimelineItemRedactedContent) + val messageEvent = aMessageEvent(isMine = true, isEditable = false, content = TimelineItemRedactedContent) initialState.eventSink.invoke( ActionListEvents.ComputeForMessage( event = messageEvent, @@ -96,7 +96,11 @@ class ActionListPresenterTest { presenter.present() }.test { val initialState = awaitItem() - val messageEvent = aMessageEvent(isMine = false, content = TimelineItemRedactedContent) + val messageEvent = aMessageEvent( + isMine = false, + isEditable = false, + content = TimelineItemRedactedContent + ) initialState.eventSink.invoke( ActionListEvents.ComputeForMessage( event = messageEvent, @@ -132,6 +136,7 @@ class ActionListPresenterTest { val initialState = awaitItem() val messageEvent = aMessageEvent( isMine = false, + isEditable = false, content = TimelineItemTextContent(body = A_MESSAGE, htmlDocument = null, isEdited = false, formattedBody = null) ) initialState.eventSink.invoke( @@ -174,6 +179,7 @@ class ActionListPresenterTest { val initialState = awaitItem() val messageEvent = aMessageEvent( isMine = false, + isEditable = false, content = TimelineItemTextContent(body = A_MESSAGE, htmlDocument = null, isEdited = false, formattedBody = null) ) initialState.eventSink.invoke( @@ -215,6 +221,7 @@ class ActionListPresenterTest { val initialState = awaitItem() val messageEvent = aMessageEvent( isMine = false, + isEditable = false, content = TimelineItemTextContent(body = A_MESSAGE, htmlDocument = null, isEdited = false, formattedBody = null) ) initialState.eventSink.invoke( @@ -256,6 +263,7 @@ class ActionListPresenterTest { val initialState = awaitItem() val messageEvent = aMessageEvent( isMine = false, + isEditable = false, content = TimelineItemTextContent(body = A_MESSAGE, htmlDocument = null, isEdited = false, formattedBody = null) ) initialState.eventSink.invoke( @@ -382,6 +390,7 @@ class ActionListPresenterTest { val initialState = awaitItem() val messageEvent = aMessageEvent( isMine = true, + isEditable = false, content = aTimelineItemImageContent(), ) initialState.eventSink.invoke(