From 5c5a5ad7fc384b87ef018daab31c1e11deea061c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Apr 2026 09:32:52 +0200 Subject: [PATCH] Fix tests --- appnav/build.gradle.kts | 3 +- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 8 ++--- .../android/appnav/RootPresenterTest.kt | 21 ++++++----- .../appnavstate/test/FakeActiveRoomsHolder.kt | 36 +++++++++++++++++++ 4 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeActiveRoomsHolder.kt diff --git a/appnav/build.gradle.kts b/appnav/build.gradle.kts index d15129aa6c..24a0355b3f 100644 --- a/appnav/build.gradle.kts +++ b/appnav/build.gradle.kts @@ -67,8 +67,7 @@ dependencies { testImplementation(projects.features.messages.test) testImplementation(projects.features.networkmonitor.test) testImplementation(projects.features.rageshake.test) - testImplementation(projects.services.appnavstate.impl) + testImplementation(projects.services.apperror.test) testImplementation(projects.services.appnavstate.test) testImplementation(projects.services.analytics.test) - testImplementation(projects.services.toolbox.test) } diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index 8d514a2c0f..6dffda9e42 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -43,7 +43,7 @@ import io.element.android.services.analytics.api.watchers.AnalyticsSendMessageWa import io.element.android.services.analytics.test.FakeAnalyticsService import io.element.android.services.analytics.test.watchers.FakeAnalyticsSendMessageWatcher import io.element.android.services.appnavstate.api.ActiveRoomsHolder -import io.element.android.services.appnavstate.impl.DefaultActiveRoomsHolder +import io.element.android.services.appnavstate.test.FakeActiveRoomsHolder import io.element.android.services.appnavstate.test.FakeAppNavigationStateService import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest @@ -128,7 +128,7 @@ class JoinedRoomLoadedFlowNodeTest { roomDetailsEntryPoint: RoomDetailsEntryPoint = FakeRoomDetailsEntryPoint(), spaceEntryPoint: SpaceEntryPoint = FakeSpaceEntryPoint(), forwardEntryPoint: ForwardEntryPoint = FakeForwardEntryPoint(), - activeRoomsHolder: ActiveRoomsHolder = DefaultActiveRoomsHolder(), + activeRoomsHolder: ActiveRoomsHolder = FakeActiveRoomsHolder(), matrixClient: FakeMatrixClient = FakeMatrixClient(), ) = JoinedRoomLoadedFlowNode( buildContext = BuildContext.root(savedStateMap = null), @@ -213,7 +213,7 @@ class JoinedRoomLoadedFlowNodeTest { val fakeMessagesEntryPoint = FakeMessagesEntryPoint() val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) - val activeRoomsHolder = DefaultActiveRoomsHolder() + val activeRoomsHolder = FakeActiveRoomsHolder() val roomFlowNode = createJoinedRoomLoadedFlowNode( plugins = listOf(inputs, FakeJoinedRoomLoadedFlowNodeCallback()), messagesEntryPoint = fakeMessagesEntryPoint, @@ -236,7 +236,7 @@ class JoinedRoomLoadedFlowNodeTest { val fakeMessagesEntryPoint = FakeMessagesEntryPoint() val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) - val activeRoomsHolder = DefaultActiveRoomsHolder().apply { + val activeRoomsHolder = FakeActiveRoomsHolder().apply { addRoom(room) } val roomFlowNode = createJoinedRoomLoadedFlowNode( diff --git a/appnav/src/test/kotlin/io/element/android/appnav/RootPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/RootPresenterTest.kt index 73d55135fb..9ba98a3f72 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/RootPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/RootPresenterTest.kt @@ -19,8 +19,7 @@ import io.element.android.libraries.matrix.test.FakeSdkMetadata import io.element.android.services.analytics.test.FakeAnalyticsService import io.element.android.services.apperror.api.AppErrorState import io.element.android.services.apperror.api.AppErrorStateService -import io.element.android.services.apperror.impl.DefaultAppErrorStateService -import io.element.android.services.toolbox.test.strings.FakeStringProvider +import io.element.android.services.apperror.test.FakeAppErrorStateService import io.element.android.tests.testutils.WarmUpRule import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -44,10 +43,16 @@ class RootPresenterTest { @Test fun `present - passes app error state`() = runTest { val presenter = createRootPresenter( - appErrorService = DefaultAppErrorStateService( - stringProvider = FakeStringProvider(), - ).apply { - showError("Bad news", "Something bad happened") + appErrorService = FakeAppErrorStateService().apply { + setAppErrorState( + AppErrorState.Error( + title = "Bad news", + body = "Something bad happened", + dismiss = { + setAppErrorState(AppErrorState.NoError) + } + ) + ) } ) moleculeFlow(RecompositionMode.Immediate) { @@ -65,9 +70,7 @@ class RootPresenterTest { } private fun createRootPresenter( - appErrorService: AppErrorStateService = DefaultAppErrorStateService( - stringProvider = FakeStringProvider(), - ), + appErrorService: AppErrorStateService = FakeAppErrorStateService(), ): RootPresenter { return RootPresenter( crashDetectionPresenter = { aCrashDetectionState() }, diff --git a/services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeActiveRoomsHolder.kt b/services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeActiveRoomsHolder.kt new file mode 100644 index 0000000000..7561932fc2 --- /dev/null +++ b/services/appnavstate/test/src/main/kotlin/io/element/android/services/appnavstate/test/FakeActiveRoomsHolder.kt @@ -0,0 +1,36 @@ +/* + * 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.services.appnavstate.test + +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.services.appnavstate.api.ActiveRoomsHolder + +class FakeActiveRoomsHolder : ActiveRoomsHolder { + private var room: JoinedRoom? = null + + override fun addRoom(room: JoinedRoom) { + this.room = room + } + + override fun getActiveRoom(sessionId: SessionId): JoinedRoom? { + return room + } + + override fun getActiveRoomMatching(sessionId: SessionId, roomId: RoomId): JoinedRoom? { + return null + } + + override fun removeRoom(sessionId: SessionId, roomId: RoomId) { + room = null + } + + override fun clear(sessionId: SessionId) { + } +}