From 5cd42f47c732fe2f873ee778d085ec620c995f39 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Feb 2025 15:19:13 +0100 Subject: [PATCH] Extract testEnv to the test module --- .../messages/reply/InReplyToMetadataKtTest.kt | 25 +++-------------- .../android/tests/testutils/TestComposable.kt | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+), 22 deletions(-) create mode 100644 tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestComposable.kt diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt index 6ef12cc305..288d0b3d9c 100644 --- a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/reply/InReplyToMetadataKtTest.kt @@ -7,12 +7,6 @@ package io.element.android.libraries.matrix.ui.messages.reply -import android.content.res.Configuration -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.platform.LocalContext -import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow @@ -52,6 +46,7 @@ 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.tests.testutils.withConfigurationAndContext import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith @@ -350,7 +345,7 @@ class InReplyToMetadataKtTest { @Test fun `a location message content`() = runTest { moleculeFlow(RecompositionMode.Immediate) { - testEnv { + withConfigurationAndContext { anInReplyToDetailsReady( eventContent = aMessageContent( messageType = LocationMessageType( @@ -380,7 +375,7 @@ class InReplyToMetadataKtTest { @Test fun `a voice message content`() = runTest { moleculeFlow(RecompositionMode.Immediate) { - testEnv { + withConfigurationAndContext { anInReplyToDetailsReady( eventContent = aMessageContent( messageType = VoiceMessageType( @@ -588,17 +583,3 @@ fun anImageInfo(): ImageInfo { blurhash = A_BLUR_HASH, ) } - -@Composable -private fun testEnv(content: @Composable () -> Any?): Any? { - var result: Any? = null - CompositionLocalProvider( - LocalConfiguration provides Configuration(), - LocalContext provides ApplicationProvider.getApplicationContext(), - ) { - content().apply { - result = this - } - } - return result -} diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestComposable.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestComposable.kt new file mode 100644 index 0000000000..673fb70bd5 --- /dev/null +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestComposable.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2025 New Vector 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.tests.testutils + +import android.content.res.Configuration +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalContext +import androidx.test.core.app.ApplicationProvider + +@Composable +fun withConfigurationAndContext(content: @Composable () -> Any?): Any? { + var result: Any? = null + CompositionLocalProvider( + LocalConfiguration provides Configuration(), + LocalContext provides ApplicationProvider.getApplicationContext(), + ) { + result = content() + } + return result +}