quality: fix tests after latest changes

This commit is contained in:
ganfra 2025-12-16 14:13:15 +01:00
parent 2bb5125a8b
commit 10b61df11b
4 changed files with 53 additions and 29 deletions

View file

@ -77,13 +77,13 @@ class ChangeRoomPermissionsPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val state = awaitUpdatedItem() val state = awaitUpdatedItem()
assertThat(state.currentPermissions?.roomName).isEqualTo(Admin.powerLevel) assertThat(state.currentPermissions?.roomName).isEqualTo(Moderator.powerLevel)
assertThat(state.hasChanges).isFalse() assertThat(state.hasChanges).isFalse()
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Admin))
awaitItem().run { awaitItem().run {
assertThat(currentPermissions?.roomName).isEqualTo(Moderator.powerLevel) assertThat(currentPermissions?.roomName).isEqualTo(Admin.powerLevel)
assertThat(hasChanges).isTrue() assertThat(hasChanges).isTrue()
} }
} }
@ -142,14 +142,14 @@ class ChangeRoomPermissionsPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val state = awaitUpdatedItem() val state = awaitUpdatedItem()
assertThat(state.currentPermissions?.roomName).isEqualTo(Admin.powerLevel) assertThat(state.currentPermissions?.roomName).isEqualTo(Moderator.powerLevel)
assertThat(state.hasChanges).isFalse() assertThat(state.hasChanges).isFalse()
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Admin))
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_AVATAR, SelectableRole.Moderator)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_AVATAR, SelectableRole.Admin))
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_TOPIC, SelectableRole.Moderator)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_TOPIC, SelectableRole.Admin))
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.SEND_EVENTS, SelectableRole.Moderator)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.SEND_EVENTS, SelectableRole.Admin))
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.REDACT_EVENTS, SelectableRole.Everyone)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.REDACT_EVENTS, SelectableRole.Admin))
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.KICK, SelectableRole.Admin)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.KICK, SelectableRole.Admin))
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.BAN, SelectableRole.Admin)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.BAN, SelectableRole.Admin))
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.INVITE, SelectableRole.Admin)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.INVITE, SelectableRole.Admin))
@ -161,16 +161,16 @@ class ChangeRoomPermissionsPresenterTest {
assertThat(awaitItem().saveAction).isEqualTo(AsyncAction.Loading) assertThat(awaitItem().saveAction).isEqualTo(AsyncAction.Loading)
assertThat(awaitItem().hasChanges).isFalse() assertThat(awaitItem().hasChanges).isFalse()
awaitItem().run { awaitItem().run {
assertThat(currentPermissions?.roomName).isEqualTo(Moderator.powerLevel) assertThat(currentPermissions?.roomName).isEqualTo(Admin.powerLevel)
assertThat(saveAction).isEqualTo(AsyncAction.Success(true)) assertThat(saveAction).isEqualTo(AsyncAction.Success(true))
} }
assertThat(analyticsService.capturedEvents).containsExactlyElementsIn( assertThat(analyticsService.capturedEvents).containsExactlyElementsIn(
listOf( listOf(
RoomModeration(RoomModeration.Action.ChangePermissionsRoomName, RoomModeration.Role.Moderator), RoomModeration(RoomModeration.Action.ChangePermissionsRoomName, RoomModeration.Role.Administrator),
RoomModeration(RoomModeration.Action.ChangePermissionsRoomAvatar, RoomModeration.Role.Moderator), RoomModeration(RoomModeration.Action.ChangePermissionsRoomAvatar, RoomModeration.Role.Administrator),
RoomModeration(RoomModeration.Action.ChangePermissionsRoomTopic, RoomModeration.Role.Moderator), RoomModeration(RoomModeration.Action.ChangePermissionsRoomTopic, RoomModeration.Role.Administrator),
RoomModeration(RoomModeration.Action.ChangePermissionsSendMessages, RoomModeration.Role.Moderator), RoomModeration(RoomModeration.Action.ChangePermissionsSendMessages, RoomModeration.Role.Administrator),
RoomModeration(RoomModeration.Action.ChangePermissionsRedactMessages, RoomModeration.Role.User), RoomModeration(RoomModeration.Action.ChangePermissionsRedactMessages, RoomModeration.Role.Administrator),
RoomModeration(RoomModeration.Action.ChangePermissionsKickMembers, RoomModeration.Role.Administrator), RoomModeration(RoomModeration.Action.ChangePermissionsKickMembers, RoomModeration.Role.Administrator),
RoomModeration(RoomModeration.Action.ChangePermissionsBanMembers, RoomModeration.Role.Administrator), RoomModeration(RoomModeration.Action.ChangePermissionsBanMembers, RoomModeration.Role.Administrator),
RoomModeration(RoomModeration.Action.ChangePermissionsInviteUsers, RoomModeration.Role.Administrator), RoomModeration(RoomModeration.Action.ChangePermissionsInviteUsers, RoomModeration.Role.Administrator),
@ -207,17 +207,17 @@ class ChangeRoomPermissionsPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val state = awaitUpdatedItem() val state = awaitUpdatedItem()
assertThat(state.currentPermissions?.roomName).isEqualTo(Admin.powerLevel) assertThat(state.currentPermissions?.roomName).isEqualTo(Moderator.powerLevel)
assertThat(state.hasChanges).isFalse() assertThat(state.hasChanges).isFalse()
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Admin))
assertThat(awaitItem().hasChanges).isTrue() assertThat(awaitItem().hasChanges).isTrue()
state.eventSink(ChangeRoomPermissionsEvent.Save) state.eventSink(ChangeRoomPermissionsEvent.Save)
assertThat(awaitItem().saveAction).isEqualTo(AsyncAction.Loading) assertThat(awaitItem().saveAction).isEqualTo(AsyncAction.Loading)
awaitItem().run { awaitItem().run {
assertThat(currentPermissions?.roomName).isEqualTo(Moderator.powerLevel) assertThat(currentPermissions?.roomName).isEqualTo(Admin.powerLevel)
// Couldn't save the changes, so they're still pending // Couldn't save the changes, so they're still pending
assertThat(hasChanges).isTrue() assertThat(hasChanges).isTrue()
assertThat(saveAction).isInstanceOf(AsyncAction.Failure::class.java) assertThat(saveAction).isInstanceOf(AsyncAction.Failure::class.java)
@ -225,7 +225,7 @@ class ChangeRoomPermissionsPresenterTest {
state.eventSink(ChangeRoomPermissionsEvent.ResetPendingActions) state.eventSink(ChangeRoomPermissionsEvent.ResetPendingActions)
awaitItem().run { awaitItem().run {
assertThat(currentPermissions?.roomName).isEqualTo(Moderator.powerLevel) assertThat(currentPermissions?.roomName).isEqualTo(Admin.powerLevel)
assertThat(saveAction).isEqualTo(AsyncAction.Uninitialized) assertThat(saveAction).isEqualTo(AsyncAction.Uninitialized)
assertThat(hasChanges).isTrue() assertThat(hasChanges).isTrue()
} }
@ -239,7 +239,7 @@ class ChangeRoomPermissionsPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val state = awaitUpdatedItem() val state = awaitUpdatedItem()
state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Admin))
assertThat(awaitItem().hasChanges).isTrue() assertThat(awaitItem().hasChanges).isTrue()
state.eventSink(ChangeRoomPermissionsEvent.Exit) state.eventSink(ChangeRoomPermissionsEvent.Exit)

View file

@ -34,8 +34,8 @@ import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
import io.element.android.libraries.matrix.api.room.BaseRoom
import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.CurrentUserMembership
import io.element.android.libraries.matrix.api.room.JoinedRoom
import io.element.android.libraries.matrix.api.room.join.JoinRoom import io.element.android.libraries.matrix.api.room.join.JoinRoom
import io.element.android.libraries.matrix.api.room.powerlevels.permissionsAsState import io.element.android.libraries.matrix.api.room.powerlevels.permissionsAsState
import io.element.android.libraries.matrix.api.spaces.SpaceRoom import io.element.android.libraries.matrix.api.spaces.SpaceRoom
@ -55,7 +55,7 @@ import kotlin.jvm.optionals.getOrNull
@Inject @Inject
class SpacePresenter( class SpacePresenter(
private val spaceRoomList: SpaceRoomList, private val spaceRoomList: SpaceRoomList,
private val room: JoinedRoom, private val room: BaseRoom,
private val client: MatrixClient, private val client: MatrixClient,
private val seenInvitesStore: SeenInvitesStore, private val seenInvitesStore: SeenInvitesStore,
private val joinRoom: JoinRoom, private val joinRoom: JoinRoom,

View file

@ -24,6 +24,7 @@ import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
import io.element.android.libraries.matrix.api.room.BaseRoom
import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.CurrentUserMembership
import io.element.android.libraries.matrix.api.room.join.JoinRoom import io.element.android.libraries.matrix.api.room.join.JoinRoom
import io.element.android.libraries.matrix.api.spaces.SpaceRoomList import io.element.android.libraries.matrix.api.spaces.SpaceRoomList
@ -31,7 +32,9 @@ import io.element.android.libraries.matrix.test.AN_EXCEPTION
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.A_ROOM_ID_2 import io.element.android.libraries.matrix.test.A_ROOM_ID_2
import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClient
import io.element.android.libraries.matrix.test.room.FakeBaseRoom
import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom
import io.element.android.libraries.matrix.test.room.powerlevels.FakeRoomPermissions
import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList
import io.element.android.libraries.previewutils.room.aSpaceRoom import io.element.android.libraries.previewutils.room.aSpaceRoom
import io.element.android.tests.testutils.EventsRecorder import io.element.android.tests.testutils.EventsRecorder
@ -71,8 +74,25 @@ class SpacePresenterTest {
} }
@Test @Test
fun `present - canAccessSpaceSettings when space settings ff is enabled`() = runTest { fun `present - canAccessSpaceSettings false when space settings ff is enabled but no permissions`() = runTest {
val presenter = createSpacePresenter(spaceSettingsEnabled = true) val presenter = createSpacePresenter(spaceSettingsEnabled = true)
presenter.test {
val state = awaitItem()
assertThat(state.canAccessSpaceSettings).isFalse()
}
}
@Test
fun `present - canAccessSpaceSettings true when space settings ff is enabled and has permissions`() = runTest {
val room = FakeBaseRoom(
roomPermissions = FakeRoomPermissions(
canSendState = { true }
)
)
val presenter = createSpacePresenter(
room = room,
spaceSettingsEnabled = true,
)
presenter.test { presenter.test {
skipItems(1) skipItems(1)
val state = awaitItem() val state = awaitItem()
@ -335,7 +355,10 @@ class SpacePresenterTest {
private fun TestScope.createSpacePresenter( private fun TestScope.createSpacePresenter(
client: MatrixClient = FakeMatrixClient(), client: MatrixClient = FakeMatrixClient(),
spaceRoomList: SpaceRoomList = FakeSpaceRoomList(), room: BaseRoom = FakeBaseRoom(),
spaceRoomList: SpaceRoomList = FakeSpaceRoomList(
paginateResult = { Result.success(Unit) }
),
seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(), seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(),
joinRoom: JoinRoom = FakeJoinRoom( joinRoom: JoinRoom = FakeJoinRoom(
lambda = { _, _, _ -> Result.success(Unit) }, lambda = { _, _, _ -> Result.success(Unit) },
@ -345,6 +368,7 @@ class SpacePresenterTest {
): SpacePresenter { ): SpacePresenter {
return SpacePresenter( return SpacePresenter(
client = client, client = client,
room = room,
spaceRoomList = spaceRoomList, spaceRoomList = spaceRoomList,
seenInvitesStore = seenInvitesStore, seenInvitesStore = seenInvitesStore,
joinRoom = joinRoom, joinRoom = joinRoom,

View file

@ -25,11 +25,11 @@ fun defaultFfiRoomPowerLevelValues() = RoomPowerLevelsValues(
invite = 0, invite = 0,
kick = 50, kick = 50,
eventsDefault = 0, eventsDefault = 0,
stateDefault = 50,
redact = 50, redact = 50,
roomName = 100, roomName = 50,
roomAvatar = 100, roomAvatar = 50,
roomTopic = 100, roomTopic = 50,
stateDefault = 0, spaceChild = 50,
usersDefault = 0, usersDefault = 0,
spaceChild = 100,
) )