Update test with Claude

This commit is contained in:
Benoit Marty
2026-08-21 09:49:23 +02:00
committed by Benoit Marty
parent 25989135a8
commit eb37c7bd55
3 changed files with 78 additions and 22 deletions
@@ -568,7 +568,10 @@ class MessagesViewTest : RobolectricTest() {
setMessagesView( setMessagesView(
state = aMessagesState( state = aMessagesState(
timelineState = aTimelineState( timelineState = aTimelineState(
sendFailureDialogState = SendFailureDialogState.Show(event = timelineItem, message = "Error"), sendFailureDialogState = SendFailureDialogState.Show(
event = timelineItem,
sendFailureType = SendFailureDialogState.SendFailureType.Error("Error"),
),
eventSink = timelineEventsRecorder, eventSink = timelineEventsRecorder,
), ),
eventSink = messagesEventsRecorder, eventSink = messagesEventsRecorder,
@@ -590,7 +593,10 @@ class MessagesViewTest : RobolectricTest() {
setMessagesView( setMessagesView(
state = aMessagesState( state = aMessagesState(
timelineState = aTimelineState( timelineState = aTimelineState(
sendFailureDialogState = SendFailureDialogState.Show(event = timelineItem, message = "Error"), sendFailureDialogState = SendFailureDialogState.Show(
event = timelineItem,
sendFailureType = SendFailureDialogState.SendFailureType.Error("Error"),
),
eventSink = timelineEventsRecorder, eventSink = timelineEventsRecorder,
), ),
eventSink = messagesEventsRecorder, eventSink = messagesEventsRecorder,
@@ -612,7 +618,10 @@ class MessagesViewTest : RobolectricTest() {
setMessagesView( setMessagesView(
state = aMessagesState( state = aMessagesState(
timelineState = aTimelineState( timelineState = aTimelineState(
sendFailureDialogState = SendFailureDialogState.Show(event = timelineItem, message = "Error"), sendFailureDialogState = SendFailureDialogState.Show(
event = timelineItem,
sendFailureType = SendFailureDialogState.SendFailureType.Error("Error"),
),
eventSink = timelineEventsRecorder, eventSink = timelineEventsRecorder,
), ),
eventSink = messagesEventsRecorder, eventSink = messagesEventsRecorder,
@@ -1404,7 +1404,10 @@ class TimelinePresenterTest {
initialState.eventSink(TimelineEvent.ShowSendFailureDialog(event)) initialState.eventSink(TimelineEvent.ShowSendFailureDialog(event))
awaitItem().also { state -> awaitItem().also { state ->
assertThat(state.sendFailureDialogState).isEqualTo( assertThat(state.sendFailureDialogState).isEqualTo(
SendFailureDialogState.Show(event = event, message = "An error") SendFailureDialogState.Show(
event = event,
sendFailureType = SendFailureDialogState.SendFailureType.Error("An error"),
)
) )
state.eventSink(TimelineEvent.HideSendFailureDialog) state.eventSink(TimelineEvent.HideSendFailureDialog)
} }
@@ -1416,39 +1419,39 @@ class TimelinePresenterTest {
@Test @Test
fun `present - show send failure dialog - unknown error with a blank reason`() { fun `present - show send failure dialog - unknown error with a blank reason`() {
assertSendFailureDialogMessage( assertSendFailureType(
sendState = LocalEventSendState.Failed.Unknown(error = ""), sendState = LocalEventSendState.Failed.Unknown(error = ""),
expectedMessage = "Unknown error", expectedSendFailureType = SendFailureDialogState.SendFailureType.Unknown,
) )
} }
@Test @Test
fun `present - show send failure dialog - invalid mime type`() { fun `present - show send failure dialog - invalid mime type`() {
assertSendFailureDialogMessage( assertSendFailureType(
sendState = LocalEventSendState.Failed.InvalidMimeType(mimeType = "invalid/mimeType"), sendState = LocalEventSendState.Failed.InvalidMimeType(mimeType = "invalid/mimeType"),
expectedMessage = "Invalid mime type: invalid/mimeType", expectedSendFailureType = SendFailureDialogState.SendFailureType.InvalidMimeType("invalid/mimeType"),
) )
} }
@Test @Test
fun `present - show send failure dialog - missing media content`() { fun `present - show send failure dialog - missing media content`() {
assertSendFailureDialogMessage( assertSendFailureType(
sendState = LocalEventSendState.Failed.MissingMediaContent, sendState = LocalEventSendState.Failed.MissingMediaContent,
expectedMessage = "Missing media content", expectedSendFailureType = SendFailureDialogState.SendFailureType.MissingMediaContent,
) )
} }
@Test @Test
fun `present - show send failure dialog - sending from unverified device`() { fun `present - show send failure dialog - sending from unverified device`() {
assertSendFailureDialogMessage( assertSendFailureType(
sendState = LocalEventSendState.Failed.SendingFromUnverifiedDevice, sendState = LocalEventSendState.Failed.SendingFromUnverifiedDevice,
expectedMessage = "Sending from unverified device", expectedSendFailureType = SendFailureDialogState.SendFailureType.SendingFromUnverifiedDevice,
) )
} }
private fun assertSendFailureDialogMessage( private fun assertSendFailureType(
sendState: LocalEventSendState.Failed, sendState: LocalEventSendState.Failed,
expectedMessage: String, expectedSendFailureType: SendFailureDialogState.SendFailureType,
) = runTest { ) = runTest {
val presenter = createTimelinePresenter() val presenter = createTimelinePresenter()
val event = aMessageEvent(sendState = sendState) val event = aMessageEvent(sendState = sendState)
@@ -1456,7 +1459,7 @@ class TimelinePresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink(TimelineEvent.ShowSendFailureDialog(event)) initialState.eventSink(TimelineEvent.ShowSendFailureDialog(event))
assertThat(awaitItem().sendFailureDialogState).isEqualTo( assertThat(awaitItem().sendFailureDialogState).isEqualTo(
SendFailureDialogState.Show(event = event, message = expectedMessage) SendFailureDialogState.Show(event = event, sendFailureType = expectedSendFailureType)
) )
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
@@ -14,12 +14,14 @@ import androidx.compose.ui.test.AndroidComposeUiTest
import androidx.compose.ui.test.ExperimentalTestApi import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.v2.runAndroidComposeUiTest import androidx.compose.ui.test.v2.runAndroidComposeUiTest
import io.element.android.features.messages.impl.R
import io.element.android.features.messages.impl.timeline.aTimelineItemEvent import io.element.android.features.messages.impl.timeline.aTimelineItemEvent
import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.TimelineItem
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
import io.element.android.tests.testutils.EnsureNeverCalled import io.element.android.tests.testutils.EnsureNeverCalled
import io.element.android.tests.testutils.EnsureNeverCalledWithParam import io.element.android.tests.testutils.EnsureNeverCalledWithParam
import io.element.android.tests.testutils.assertNodeWithTextIsDisplayed
import io.element.android.tests.testutils.clickOn import io.element.android.tests.testutils.clickOn
import io.element.android.tests.testutils.ensureCalledOnce import io.element.android.tests.testutils.ensureCalledOnce
import io.element.android.tests.testutils.ensureCalledOnceWithParam import io.element.android.tests.testutils.ensureCalledOnceWithParam
@@ -37,12 +39,54 @@ class SendFailureDialogViewTest : RobolectricTest() {
} }
@Test @Test
fun `show state renders the failure reason`() = runAndroidComposeUiTest { fun `show state renders the error failure reason`() = runAndroidComposeUiTest {
setSendFailureDialogView( setSendFailureDialogView(
sendFailureDialogState = aSendFailureDialogStateShow(message = "A failure reason"), sendFailureDialogState = aSendFailureDialogStateShow(
sendFailureType = SendFailureDialogState.SendFailureType.Error("A failure reason"),
),
) )
onNodeWithText(activity!!.getString(CommonStrings.common_sending_failed)).assertExists() assertNodeWithTextIsDisplayed(CommonStrings.common_sending_failed)
onNodeWithText("A failure reason").assertExists() onNodeWithText(activity!!.getString(R.string.error_sending_failure_other, "A failure reason")).assertExists()
}
@Test
fun `show state renders the invalid mime type failure reason`() = runAndroidComposeUiTest {
setSendFailureDialogView(
sendFailureDialogState = aSendFailureDialogStateShow(
sendFailureType = SendFailureDialogState.SendFailureType.InvalidMimeType("invalid/mimeType"),
),
)
onNodeWithText(activity!!.getString(R.string.error_sending_failure_invalid_mime_type, "invalid/mimeType")).assertExists()
}
@Test
fun `show state renders the missing media content failure reason`() = runAndroidComposeUiTest {
setSendFailureDialogView(
sendFailureDialogState = aSendFailureDialogStateShow(
sendFailureType = SendFailureDialogState.SendFailureType.MissingMediaContent,
),
)
onNodeWithText(activity!!.getString(R.string.error_sending_failure_missing_media_content)).assertExists()
}
@Test
fun `show state renders the sending from unverified device failure reason`() = runAndroidComposeUiTest {
setSendFailureDialogView(
sendFailureDialogState = aSendFailureDialogStateShow(
sendFailureType = SendFailureDialogState.SendFailureType.SendingFromUnverifiedDevice,
),
)
onNodeWithText(activity!!.getString(R.string.error_sending_failure_sending_from_unverified_device)).assertExists()
}
@Test
fun `show state renders the unknown failure reason`() = runAndroidComposeUiTest {
setSendFailureDialogView(
sendFailureDialogState = aSendFailureDialogStateShow(
sendFailureType = SendFailureDialogState.SendFailureType.Unknown,
),
)
onNodeWithText(activity!!.getString(R.string.error_sending_failure_unknown)).assertExists()
} }
@Test @Test
@@ -81,10 +125,10 @@ class SendFailureDialogViewTest : RobolectricTest() {
} }
private fun aSendFailureDialogStateShow( private fun aSendFailureDialogStateShow(
message: String = "A failure reason", sendFailureType: SendFailureDialogState.SendFailureType = SendFailureDialogState.SendFailureType.Unknown,
) = SendFailureDialogState.Show( ) = SendFailureDialogState.Show(
event = aTimelineItemEvent(sendState = LocalEventSendState.Failed.Unknown(message)), event = aTimelineItemEvent(sendState = LocalEventSendState.Failed.Unknown("")),
message = message, sendFailureType = sendFailureType,
) )
private fun AndroidComposeUiTest<ComponentActivity>.setSendFailureDialogView( private fun AndroidComposeUiTest<ComponentActivity>.setSendFailureDialogView(