Remove FakeLeaveRoomPresenter
This commit is contained in:
parent
39706ee4a8
commit
2a4726e611
7 changed files with 18 additions and 83 deletions
|
|
@ -57,9 +57,10 @@ fun aLeaveRoomState(
|
||||||
confirmation: LeaveRoomState.Confirmation = LeaveRoomState.Confirmation.Hidden,
|
confirmation: LeaveRoomState.Confirmation = LeaveRoomState.Confirmation.Hidden,
|
||||||
progress: LeaveRoomState.Progress = LeaveRoomState.Progress.Hidden,
|
progress: LeaveRoomState.Progress = LeaveRoomState.Progress.Hidden,
|
||||||
error: LeaveRoomState.Error = LeaveRoomState.Error.Hidden,
|
error: LeaveRoomState.Error = LeaveRoomState.Error.Hidden,
|
||||||
|
eventSink: (LeaveRoomEvent) -> Unit = {},
|
||||||
) = LeaveRoomState(
|
) = LeaveRoomState(
|
||||||
confirmation = confirmation,
|
confirmation = confirmation,
|
||||||
progress = progress,
|
progress = progress,
|
||||||
error = error,
|
error = error,
|
||||||
eventSink = {},
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2022-2024 New Vector Ltd.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
* Please see LICENSE in the repository root for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id("io.element.android-compose-library")
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "io.element.android.features.leaveroom.test"
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(projects.libraries.core)
|
|
||||||
implementation(projects.libraries.architecture)
|
|
||||||
implementation(projects.libraries.matrix.api)
|
|
||||||
api(projects.features.leaveroom.api)
|
|
||||||
}
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2023, 2024 New Vector Ltd.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
* Please see LICENSE in the repository root for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package io.element.android.features.leaveroom.fake
|
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomState
|
|
||||||
import io.element.android.libraries.architecture.Presenter
|
|
||||||
|
|
||||||
class FakeLeaveRoomPresenter : Presenter<LeaveRoomState> {
|
|
||||||
val events = mutableListOf<LeaveRoomEvent>()
|
|
||||||
|
|
||||||
private fun handleEvent(event: LeaveRoomEvent) {
|
|
||||||
events += event
|
|
||||||
}
|
|
||||||
|
|
||||||
private var state = LeaveRoomState(
|
|
||||||
confirmation = LeaveRoomState.Confirmation.Hidden,
|
|
||||||
progress = LeaveRoomState.Progress.Hidden,
|
|
||||||
error = LeaveRoomState.Error.Hidden,
|
|
||||||
eventSink = ::handleEvent,
|
|
||||||
)
|
|
||||||
set(value) {
|
|
||||||
field = value.copy(eventSink = ::handleEvent)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun givenState(state: LeaveRoomState) {
|
|
||||||
this.state = state
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
override fun present(): LeaveRoomState = state
|
|
||||||
}
|
|
||||||
|
|
@ -64,7 +64,6 @@ dependencies {
|
||||||
testImplementation(projects.libraries.usersearch.test)
|
testImplementation(projects.libraries.usersearch.test)
|
||||||
testImplementation(projects.libraries.featureflag.test)
|
testImplementation(projects.libraries.featureflag.test)
|
||||||
testImplementation(projects.tests.testutils)
|
testImplementation(projects.tests.testutils)
|
||||||
testImplementation(projects.features.leaveroom.test)
|
|
||||||
testImplementation(projects.features.createroom.test)
|
testImplementation(projects.features.createroom.test)
|
||||||
testImplementation(projects.services.analytics.test)
|
testImplementation(projects.services.analytics.test)
|
||||||
testImplementation(libs.androidx.compose.ui.test.junit)
|
testImplementation(libs.androidx.compose.ui.test.junit)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import im.vector.app.features.analytics.plan.Interaction
|
||||||
import io.element.android.features.createroom.test.FakeStartDMAction
|
import io.element.android.features.createroom.test.FakeStartDMAction
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomState
|
import io.element.android.features.leaveroom.api.LeaveRoomState
|
||||||
import io.element.android.features.leaveroom.fake.FakeLeaveRoomPresenter
|
import io.element.android.features.leaveroom.api.aLeaveRoomState
|
||||||
import io.element.android.features.roomdetails.impl.RoomDetailsEvent
|
import io.element.android.features.roomdetails.impl.RoomDetailsEvent
|
||||||
import io.element.android.features.roomdetails.impl.RoomDetailsPresenter
|
import io.element.android.features.roomdetails.impl.RoomDetailsPresenter
|
||||||
import io.element.android.features.roomdetails.impl.RoomDetailsState
|
import io.element.android.features.roomdetails.impl.RoomDetailsState
|
||||||
|
|
@ -25,7 +25,6 @@ import io.element.android.features.roomdetails.impl.RoomDetailsType
|
||||||
import io.element.android.features.roomdetails.impl.RoomTopicState
|
import io.element.android.features.roomdetails.impl.RoomTopicState
|
||||||
import io.element.android.features.roomdetails.impl.members.aRoomMember
|
import io.element.android.features.roomdetails.impl.members.aRoomMember
|
||||||
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter
|
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter
|
||||||
import io.element.android.libraries.architecture.Presenter
|
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
import io.element.android.libraries.featureflag.api.FeatureFlags
|
||||||
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
||||||
|
|
@ -46,6 +45,7 @@ import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
|
||||||
import io.element.android.libraries.matrix.test.room.aRoomInfo
|
import io.element.android.libraries.matrix.test.room.aRoomInfo
|
||||||
import io.element.android.services.analytics.api.AnalyticsService
|
import io.element.android.services.analytics.api.AnalyticsService
|
||||||
import io.element.android.services.analytics.test.FakeAnalyticsService
|
import io.element.android.services.analytics.test.FakeAnalyticsService
|
||||||
|
import io.element.android.tests.testutils.EventsRecorder
|
||||||
import io.element.android.tests.testutils.FakeLifecycleOwner
|
import io.element.android.tests.testutils.FakeLifecycleOwner
|
||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
import io.element.android.tests.testutils.consumeItemsUntilPredicate
|
import io.element.android.tests.testutils.consumeItemsUntilPredicate
|
||||||
|
|
@ -73,7 +73,7 @@ class RoomDetailsPresenterTest {
|
||||||
|
|
||||||
private fun TestScope.createRoomDetailsPresenter(
|
private fun TestScope.createRoomDetailsPresenter(
|
||||||
room: MatrixRoom = aMatrixRoom(),
|
room: MatrixRoom = aMatrixRoom(),
|
||||||
leaveRoomPresenter: Presenter<LeaveRoomState> = FakeLeaveRoomPresenter(),
|
leaveRoomState: LeaveRoomState = aLeaveRoomState(),
|
||||||
dispatchers: CoroutineDispatchers = testCoroutineDispatchers(),
|
dispatchers: CoroutineDispatchers = testCoroutineDispatchers(),
|
||||||
notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(),
|
notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(),
|
||||||
analyticsService: AnalyticsService = FakeAnalyticsService(),
|
analyticsService: AnalyticsService = FakeAnalyticsService(),
|
||||||
|
|
@ -94,7 +94,7 @@ class RoomDetailsPresenterTest {
|
||||||
featureFlagService = featureFlagService,
|
featureFlagService = featureFlagService,
|
||||||
notificationSettingsService = matrixClient.notificationSettingsService(),
|
notificationSettingsService = matrixClient.notificationSettingsService(),
|
||||||
roomMembersDetailsPresenterFactory = roomMemberDetailsPresenterFactory,
|
roomMembersDetailsPresenterFactory = roomMemberDetailsPresenterFactory,
|
||||||
leaveRoomPresenter = leaveRoomPresenter,
|
leaveRoomPresenter = { leaveRoomState },
|
||||||
dispatchers = dispatchers,
|
dispatchers = dispatchers,
|
||||||
isPinnedMessagesFeatureEnabled = { isPinnedMessagesFeatureEnabled },
|
isPinnedMessagesFeatureEnabled = { isPinnedMessagesFeatureEnabled },
|
||||||
analyticsService = analyticsService,
|
analyticsService = analyticsService,
|
||||||
|
|
@ -476,7 +476,7 @@ class RoomDetailsPresenterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - leave room event is passed on to leave room presenter`() = runTest {
|
fun `present - leave room event is passed on to leave room presenter`() = runTest {
|
||||||
val leaveRoomPresenter = FakeLeaveRoomPresenter()
|
val leaveRoomEventRecorder = EventsRecorder<LeaveRoomEvent>()
|
||||||
val room = aMatrixRoom(
|
val room = aMatrixRoom(
|
||||||
canInviteResult = { Result.success(true) },
|
canInviteResult = { Result.success(true) },
|
||||||
canUserJoinCallResult = { Result.success(true) },
|
canUserJoinCallResult = { Result.success(true) },
|
||||||
|
|
@ -484,25 +484,18 @@ class RoomDetailsPresenterTest {
|
||||||
)
|
)
|
||||||
val presenter = createRoomDetailsPresenter(
|
val presenter = createRoomDetailsPresenter(
|
||||||
room = room,
|
room = room,
|
||||||
leaveRoomPresenter = leaveRoomPresenter,
|
leaveRoomState = aLeaveRoomState(eventSink = leaveRoomEventRecorder),
|
||||||
dispatchers = testCoroutineDispatchers()
|
dispatchers = testCoroutineDispatchers()
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
awaitItem().eventSink(RoomDetailsEvent.LeaveRoom)
|
awaitItem().eventSink(RoomDetailsEvent.LeaveRoom)
|
||||||
|
leaveRoomEventRecorder.assertSingle(LeaveRoomEvent.ShowConfirmation(room.roomId))
|
||||||
assertThat(leaveRoomPresenter.events).contains(
|
|
||||||
LeaveRoomEvent.ShowConfirmation(
|
|
||||||
room.roomId
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
cancelAndIgnoreRemainingEvents()
|
cancelAndIgnoreRemainingEvents()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - notification mode changes`() = runTest {
|
fun `present - notification mode changes`() = runTest {
|
||||||
val leaveRoomPresenter = FakeLeaveRoomPresenter()
|
|
||||||
val notificationSettingsService = FakeNotificationSettingsService()
|
val notificationSettingsService = FakeNotificationSettingsService()
|
||||||
val room = aMatrixRoom(
|
val room = aMatrixRoom(
|
||||||
notificationSettingsService = notificationSettingsService,
|
notificationSettingsService = notificationSettingsService,
|
||||||
|
|
@ -512,7 +505,6 @@ class RoomDetailsPresenterTest {
|
||||||
)
|
)
|
||||||
val presenter = createRoomDetailsPresenter(
|
val presenter = createRoomDetailsPresenter(
|
||||||
room = room,
|
room = room,
|
||||||
leaveRoomPresenter = leaveRoomPresenter,
|
|
||||||
notificationSettingsService = notificationSettingsService,
|
notificationSettingsService = notificationSettingsService,
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
|
|
|
||||||
|
|
@ -74,5 +74,4 @@ dependencies {
|
||||||
testImplementation(projects.features.networkmonitor.test)
|
testImplementation(projects.features.networkmonitor.test)
|
||||||
testImplementation(projects.features.logout.test)
|
testImplementation(projects.features.logout.test)
|
||||||
testImplementation(projects.tests.testutils)
|
testImplementation(projects.tests.testutils)
|
||||||
testImplementation(projects.features.leaveroom.test)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import io.element.android.features.invite.api.response.AcceptDeclineInviteState
|
||||||
import io.element.android.features.invite.api.response.anAcceptDeclineInviteState
|
import io.element.android.features.invite.api.response.anAcceptDeclineInviteState
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomState
|
import io.element.android.features.leaveroom.api.LeaveRoomState
|
||||||
import io.element.android.features.leaveroom.fake.FakeLeaveRoomPresenter
|
import io.element.android.features.leaveroom.api.aLeaveRoomState
|
||||||
import io.element.android.features.logout.api.direct.aDirectLogoutState
|
import io.element.android.features.logout.api.direct.aDirectLogoutState
|
||||||
import io.element.android.features.networkmonitor.api.NetworkMonitor
|
import io.element.android.features.networkmonitor.api.NetworkMonitor
|
||||||
import io.element.android.features.networkmonitor.test.FakeNetworkMonitor
|
import io.element.android.features.networkmonitor.test.FakeNetworkMonitor
|
||||||
|
|
@ -368,15 +368,18 @@ class RoomListPresenterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - leave room calls into leave room presenter`() = runTest {
|
fun `present - leave room calls into leave room presenter`() = runTest {
|
||||||
val leaveRoomPresenter = FakeLeaveRoomPresenter()
|
val leaveRoomEventsRecorder = EventsRecorder<LeaveRoomEvent>()
|
||||||
val scope = CoroutineScope(coroutineContext + SupervisorJob())
|
val scope = CoroutineScope(coroutineContext + SupervisorJob())
|
||||||
val presenter = createRoomListPresenter(leaveRoomPresenter = leaveRoomPresenter, coroutineScope = scope)
|
val presenter = createRoomListPresenter(
|
||||||
|
leaveRoomState = aLeaveRoomState(eventSink = leaveRoomEventsRecorder),
|
||||||
|
coroutineScope = scope,
|
||||||
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
moleculeFlow(RecompositionMode.Immediate) {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(RoomListEvents.LeaveRoom(A_ROOM_ID))
|
initialState.eventSink(RoomListEvents.LeaveRoom(A_ROOM_ID))
|
||||||
assertThat(leaveRoomPresenter.events).containsExactly(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
|
leaveRoomEventsRecorder.assertSingle(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
|
||||||
cancelAndIgnoreRemainingEvents()
|
cancelAndIgnoreRemainingEvents()
|
||||||
scope.cancel()
|
scope.cancel()
|
||||||
}
|
}
|
||||||
|
|
@ -671,7 +674,7 @@ class RoomListPresenterTest {
|
||||||
client: MatrixClient = FakeMatrixClient(),
|
client: MatrixClient = FakeMatrixClient(),
|
||||||
networkMonitor: NetworkMonitor = FakeNetworkMonitor(),
|
networkMonitor: NetworkMonitor = FakeNetworkMonitor(),
|
||||||
snackbarDispatcher: SnackbarDispatcher = SnackbarDispatcher(),
|
snackbarDispatcher: SnackbarDispatcher = SnackbarDispatcher(),
|
||||||
leaveRoomPresenter: Presenter<LeaveRoomState> = FakeLeaveRoomPresenter(),
|
leaveRoomState: LeaveRoomState = aLeaveRoomState(),
|
||||||
lastMessageTimestampFormatter: LastMessageTimestampFormatter = FakeLastMessageTimestampFormatter().apply {
|
lastMessageTimestampFormatter: LastMessageTimestampFormatter = FakeLastMessageTimestampFormatter().apply {
|
||||||
givenFormat(A_FORMATTED_DATE)
|
givenFormat(A_FORMATTED_DATE)
|
||||||
},
|
},
|
||||||
|
|
@ -688,7 +691,7 @@ class RoomListPresenterTest {
|
||||||
client = client,
|
client = client,
|
||||||
networkMonitor = networkMonitor,
|
networkMonitor = networkMonitor,
|
||||||
snackbarDispatcher = snackbarDispatcher,
|
snackbarDispatcher = snackbarDispatcher,
|
||||||
leaveRoomPresenter = leaveRoomPresenter,
|
leaveRoomPresenter = { leaveRoomState },
|
||||||
roomListDataSource = RoomListDataSource(
|
roomListDataSource = RoomListDataSource(
|
||||||
roomListService = client.roomListService,
|
roomListService = client.roomListService,
|
||||||
roomListRoomSummaryFactory = RoomListRoomSummaryFactory(
|
roomListRoomSummaryFactory = RoomListRoomSummaryFactory(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue