From 89deff8a5321f430690ac672544113c07f6f1218 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 22 Jul 2026 15:33:54 +0200 Subject: [PATCH] Add libraries/emoji/test module with picker fakes --- features/messages/impl/build.gradle.kts | 1 + .../CustomReactionPresenterTest.kt | 5 ++--- libraries/emoji/test/build.gradle.kts | 19 +++++++++++++++++++ .../emoji/test/FakeEmojiPickerPresenter.kt | 19 +++++++++++++++++++ .../emoji/test/FakeEmojiPickerState.kt | 18 ++++++++++++++++++ 5 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 libraries/emoji/test/build.gradle.kts create mode 100644 libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerPresenter.kt create mode 100644 libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerState.kt diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index d442e1bb95..b40aebab39 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -107,5 +107,6 @@ dependencies { testImplementation(projects.features.poll.test) testImplementation(projects.libraries.eventformatter.test) testImplementation(projects.libraries.emoji.impl) + testImplementation(projects.libraries.emoji.test) testImplementation(projects.libraries.slashcommands.test) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt index 8ba316ea4d..4d3c4ab41a 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt @@ -11,9 +11,8 @@ package io.element.android.features.messages.impl.timeline.components.customreac import com.google.common.truth.Truth.assertThat import io.element.android.features.messages.impl.timeline.aTimelineItemEvent import io.element.android.features.messages.impl.timeline.aTimelineItemReactions -import io.element.android.libraries.emoji.api.picker.EmojiPickerPresenter import io.element.android.libraries.emoji.api.recentemojis.EmptyGetRecentEmojis -import io.element.android.libraries.emoji.impl.picker.anEmojiPickerState +import io.element.android.libraries.emoji.test.fakeEmojiPickerPresenterFactory import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.test @@ -26,7 +25,7 @@ class CustomReactionPresenterTest { val warmUpRule = WarmUpRule() private val presenter = CustomReactionPresenter( - emojiPickerPresenterFactory = EmojiPickerPresenter.Factory { EmojiPickerPresenter { anEmojiPickerState() } }, + emojiPickerPresenterFactory = fakeEmojiPickerPresenterFactory(), getRecentEmojis = EmptyGetRecentEmojis, ) diff --git a/libraries/emoji/test/build.gradle.kts b/libraries/emoji/test/build.gradle.kts new file mode 100644 index 0000000000..3a18a239ad --- /dev/null +++ b/libraries/emoji/test/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +plugins { + id("io.element.android-compose-library") +} + +android { + namespace = "io.element.android.libraries.emoji.test" +} + +dependencies { + api(projects.libraries.emoji.api) + implementation(projects.libraries.architecture) +} diff --git a/libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerPresenter.kt b/libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerPresenter.kt new file mode 100644 index 0000000000..76a239ac49 --- /dev/null +++ b/libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerPresenter.kt @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.emoji.test + +import io.element.android.libraries.emoji.api.picker.EmojiPickerPresenter +import io.element.android.libraries.emoji.api.picker.EmojiPickerState + +fun fakeEmojiPickerPresenter( + state: EmojiPickerState = FakeEmojiPickerState(), +): EmojiPickerPresenter = EmojiPickerPresenter { state } + +fun fakeEmojiPickerPresenterFactory( + presenter: EmojiPickerPresenter = fakeEmojiPickerPresenter(), +): EmojiPickerPresenter.Factory = EmojiPickerPresenter.Factory { presenter } diff --git a/libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerState.kt b/libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerState.kt new file mode 100644 index 0000000000..234fe2e9b2 --- /dev/null +++ b/libraries/emoji/test/src/main/kotlin/io/element/android/libraries/emoji/test/FakeEmojiPickerState.kt @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.emoji.test + +import io.element.android.libraries.emoji.api.picker.EmojiPickerState + +/** + * Minimal [EmojiPickerState] for use in tests that don't render the picker (typically presenter + * tests). + */ +data class FakeEmojiPickerState( + override val isReady: Boolean = true, +) : EmojiPickerState