From e68684815df607ed4644f6eb7bd8a8e2f73bc368 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 25 Jun 2024 15:17:18 +0200 Subject: [PATCH] Draft : makes sure all existing tests passes --- .../messages/impl/MessagesPresenterTest.kt | 8 ++++---- .../MessageComposerPresenterTest.kt | 20 ------------------- .../api/room/draft/ComposerDraftType.kt | 8 ++++---- libraries/matrixui/build.gradle.kts | 15 +++++++++++++- .../messages/reply}/InReplyToDetailTest.kt | 4 +++- .../reply}/InReplyToMetadataKtTest.kt | 5 ++++- 6 files changed, 29 insertions(+), 31 deletions(-) rename {features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model => libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply}/InReplyToDetailTest.kt (95%) rename {features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model => libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply}/InReplyToMetadataKtTest.kt (98%) 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 7b23302dcd..ac9eaa4108 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 @@ -336,7 +336,7 @@ class MessagesPresenterTest { val finalState = awaitItem() assertThat(finalState.composerState.mode).isInstanceOf(MessageComposerMode.Reply::class.java) val replyMode = finalState.composerState.mode as MessageComposerMode.Reply - assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Ready::class.java) + assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Loading::class.java) assertThat(finalState.actionListState.target).isEqualTo(ActionListState.Target.None) } } @@ -369,7 +369,7 @@ class MessagesPresenterTest { val finalState = awaitItem() assertThat(finalState.composerState.mode).isInstanceOf(MessageComposerMode.Reply::class.java) val replyMode = finalState.composerState.mode as MessageComposerMode.Reply - assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Ready::class.java) + assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Loading::class.java) assertThat(finalState.actionListState.target).isEqualTo(ActionListState.Target.None) } } @@ -395,7 +395,7 @@ class MessagesPresenterTest { val finalState = awaitItem() assertThat(finalState.composerState.mode).isInstanceOf(MessageComposerMode.Reply::class.java) val replyMode = finalState.composerState.mode as MessageComposerMode.Reply - assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Ready::class.java) + assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Loading::class.java) assertThat(finalState.actionListState.target).isEqualTo(ActionListState.Target.None) } } @@ -741,7 +741,7 @@ class MessagesPresenterTest { assertThat(finalState.composerState.mode).isInstanceOf(MessageComposerMode.Reply::class.java) val replyMode = finalState.composerState.mode as MessageComposerMode.Reply - assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Ready::class.java) + assertThat(replyMode.replyToDetails).isInstanceOf(InReplyToDetails.Loading::class.java) assertThat(finalState.actionListState.target).isEqualTo(ActionListState.Target.None) } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt index b286b948ea..513a671291 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt @@ -180,7 +180,6 @@ class MessageComposerPresenterTest { state.eventSink.invoke(MessageComposerEvents.SetMode(mode)) state = awaitItem() assertThat(state.mode).isEqualTo(mode) - state = awaitItem() assertThat(state.textEditorState.messageHtml()).isEqualTo(A_MESSAGE) state = backToNormalMode(state, skipCount = 1) @@ -224,22 +223,6 @@ class MessageComposerPresenterTest { } } - @Test - fun `present - change mode to quote`() = runTest { - val presenter = createPresenter(this) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - var state = awaitFirstItem() - val mode = aQuoteMode() - state.eventSink.invoke(MessageComposerEvents.SetMode(mode)) - state = awaitItem() - assertThat(state.mode).isEqualTo(mode) - assertThat(state.textEditorState.messageHtml()).isEqualTo("") - backToNormalMode(state) - } - } - @Test fun `present - send message with rich text enabled`() = runTest { val presenter = createPresenter(this) @@ -316,7 +299,6 @@ class MessageComposerPresenterTest { assertThat(initialState.textEditorState.messageHtml()).isEqualTo("") val mode = anEditMode() initialState.eventSink.invoke(MessageComposerEvents.SetMode(mode)) - skipItems(1) val withMessageState = awaitItem() assertThat(withMessageState.mode).isEqualTo(mode) assertThat(withMessageState.textEditorState.messageHtml()).isEqualTo(A_MESSAGE) @@ -366,7 +348,6 @@ class MessageComposerPresenterTest { assertThat(initialState.textEditorState.messageHtml()).isEqualTo("") val mode = anEditMode(eventId = null, transactionId = A_TRANSACTION_ID) initialState.eventSink.invoke(MessageComposerEvents.SetMode(mode)) - skipItems(1) val withMessageState = awaitItem() assertThat(withMessageState.mode).isEqualTo(mode) assertThat(withMessageState.textEditorState.messageHtml()).isEqualTo(A_MESSAGE) @@ -1085,7 +1066,6 @@ fun anEditMode( ) = MessageComposerMode.Edit(eventId, transactionId, message) fun aReplyMode() = MessageComposerMode.Reply(replyToDetails = InReplyToDetails.Loading(AN_EVENT_ID)) -fun aQuoteMode() = MessageComposerMode.Quote(AN_EVENT_ID, A_MESSAGE) private suspend fun TextEditorState.setHtml(html: String) { (this as? TextEditorState.Rich)?.richTextEditorState?.setHtml(html) ?: error("TextEditorState is not Rich") diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/draft/ComposerDraftType.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/draft/ComposerDraftType.kt index 632efab36f..7ce059a98b 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/draft/ComposerDraftType.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/draft/ComposerDraftType.kt @@ -18,8 +18,8 @@ package io.element.android.libraries.matrix.api.room.draft import io.element.android.libraries.matrix.api.core.EventId -sealed class ComposerDraftType { - data object NewMessage : ComposerDraftType() - data class Reply(val eventId: EventId) : ComposerDraftType() - data class Edit(val eventId: EventId) : ComposerDraftType() +sealed interface ComposerDraftType { + data object NewMessage : ComposerDraftType + data class Reply(val eventId: EventId) : ComposerDraftType + data class Edit(val eventId: EventId) : ComposerDraftType } diff --git a/libraries/matrixui/build.gradle.kts b/libraries/matrixui/build.gradle.kts index ed7f3d068d..7a33bd3424 100644 --- a/libraries/matrixui/build.gradle.kts +++ b/libraries/matrixui/build.gradle.kts @@ -23,6 +23,11 @@ plugins { android { namespace = "io.element.android.libraries.matrix.ui" + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } } anvil { @@ -47,7 +52,15 @@ dependencies { ksp(libs.showkase.processor) testImplementation(libs.test.junit) + testImplementation(libs.coroutines.test) + testImplementation(libs.molecule.runtime) testImplementation(libs.test.truth) - testImplementation(libs.test.robolectric) + testImplementation(libs.test.turbine) testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.dateformatter.test) + testImplementation(projects.tests.testutils) + testImplementation(libs.test.mockk) + testImplementation(libs.test.robolectric) + testImplementation(libs.androidx.compose.ui.test.junit) + } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToDetailTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply/InReplyToDetailTest.kt similarity index 95% rename from features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToDetailTest.kt rename to libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply/InReplyToDetailTest.kt index b103cc8e68..868e9524d7 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToDetailTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply/InReplyToDetailTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.features.messages.impl.timeline.model +package io.element.android.libraries.matrixui.messages.reply import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.timeline.item.event.FormattedBody @@ -28,6 +28,8 @@ import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.permalink.FakePermalinkParser import io.element.android.libraries.matrix.test.timeline.aProfileTimelineDetails +import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails +import io.element.android.libraries.matrix.ui.messages.reply.map import org.junit.Test class InReplyToDetailTest { diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadataKtTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply/InReplyToMetadataKtTest.kt similarity index 98% rename from features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadataKtTest.kt rename to libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply/InReplyToMetadataKtTest.kt index 134d9ffde3..55fc4a8aa6 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/model/InReplyToMetadataKtTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrixui/messages/reply/InReplyToMetadataKtTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.features.messages.impl.timeline.model +package io.element.android.libraries.matrixui.messages.reply import android.content.res.Configuration import androidx.compose.runtime.Composable @@ -60,6 +60,9 @@ import io.element.android.libraries.matrix.test.timeline.aProfileTimelineDetails import io.element.android.libraries.matrix.ui.components.A_BLUR_HASH import io.element.android.libraries.matrix.ui.components.AttachmentThumbnailInfo import io.element.android.libraries.matrix.ui.components.AttachmentThumbnailType +import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails +import io.element.android.libraries.matrix.ui.messages.reply.InReplyToMetadata +import io.element.android.libraries.matrix.ui.messages.reply.metadata import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith