misc(power level) : update tests following api change
This commit is contained in:
@@ -13,8 +13,8 @@ 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.core.UserId
|
||||
import io.element.android.libraries.matrix.api.room.RoomMember
|
||||
import io.element.android.libraries.matrix.api.room.StateEventType
|
||||
import io.element.android.libraries.matrix.api.room.join.JoinRule
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.RoomPermissions
|
||||
import io.element.android.libraries.matrix.test.AN_AVATAR_URL
|
||||
import io.element.android.libraries.matrix.test.A_ROOM_ALIAS
|
||||
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
||||
@@ -25,6 +25,7 @@ import io.element.android.libraries.matrix.test.notificationsettings.FakeNotific
|
||||
import io.element.android.libraries.matrix.test.room.FakeBaseRoom
|
||||
import io.element.android.libraries.matrix.test.room.FakeJoinedRoom
|
||||
import io.element.android.libraries.matrix.test.room.aRoomInfo
|
||||
import io.element.android.libraries.matrix.test.room.powerlevels.FakeRoomPermissions
|
||||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
|
||||
fun aRoom(
|
||||
@@ -35,6 +36,7 @@ fun aRoom(
|
||||
topic: String? = A_ROOM_TOPIC,
|
||||
avatarUrl: String? = AN_AVATAR_URL,
|
||||
canonicalAlias: RoomAlias? = A_ROOM_ALIAS,
|
||||
roomPermissions: RoomPermissions = FakeRoomPermissions(),
|
||||
isEncrypted: Boolean = true,
|
||||
isPublic: Boolean = true,
|
||||
isDirect: Boolean = false,
|
||||
@@ -42,29 +44,20 @@ fun aRoom(
|
||||
activeMemberCount: Long = 1,
|
||||
joinedMemberCount: Long = 1,
|
||||
invitedMemberCount: Long = 0,
|
||||
canInviteResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
canBanResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
canKickResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
canSendStateResult: (UserId, StateEventType) -> Result<Boolean> = { _, _ -> lambdaError() },
|
||||
userDisplayNameResult: (UserId) -> Result<String?> = { lambdaError() },
|
||||
userAvatarUrlResult: () -> Result<String?> = { lambdaError() },
|
||||
canUserJoinCallResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
getUpdatedMemberResult: (UserId) -> Result<RoomMember> = { lambdaError() },
|
||||
userRoleResult: () -> Result<RoomMember.Role> = { lambdaError() },
|
||||
setIsFavoriteResult: (Boolean) -> Result<Unit> = { lambdaError() },
|
||||
) = FakeBaseRoom(
|
||||
sessionId = sessionId,
|
||||
roomId = roomId,
|
||||
canInviteResult = canInviteResult,
|
||||
canBanResult = canBanResult,
|
||||
canKickResult = canKickResult,
|
||||
canSendStateResult = canSendStateResult,
|
||||
userDisplayNameResult = userDisplayNameResult,
|
||||
userAvatarUrlResult = userAvatarUrlResult,
|
||||
canUserJoinCallResult = canUserJoinCallResult,
|
||||
getUpdatedMemberResult = getUpdatedMemberResult,
|
||||
userRoleResult = userRoleResult,
|
||||
setIsFavoriteResult = setIsFavoriteResult,
|
||||
roomPermissions = roomPermissions,
|
||||
initialRoomInfo = aRoomInfo(
|
||||
name = displayName,
|
||||
rawName = rawName,
|
||||
@@ -89,6 +82,7 @@ fun aJoinedRoom(
|
||||
topic: String? = A_ROOM_TOPIC,
|
||||
avatarUrl: String? = AN_AVATAR_URL,
|
||||
canonicalAlias: RoomAlias? = A_ROOM_ALIAS,
|
||||
roomPermissions: RoomPermissions = FakeRoomPermissions(),
|
||||
isEncrypted: Boolean = true,
|
||||
isPublic: Boolean = true,
|
||||
isDirect: Boolean = false,
|
||||
@@ -97,17 +91,12 @@ fun aJoinedRoom(
|
||||
joinedMemberCount: Long = 1,
|
||||
invitedMemberCount: Long = 0,
|
||||
notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(),
|
||||
canInviteResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
canBanResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
canKickResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
canSendStateResult: (UserId, StateEventType) -> Result<Boolean> = { _, _ -> lambdaError() },
|
||||
userDisplayNameResult: (UserId) -> Result<String?> = { lambdaError() },
|
||||
userAvatarUrlResult: () -> Result<String?> = { lambdaError() },
|
||||
setNameResult: (String) -> Result<Unit> = { lambdaError() },
|
||||
setTopicResult: (String) -> Result<Unit> = { lambdaError() },
|
||||
updateAvatarResult: (String, ByteArray) -> Result<Unit> = { _, _ -> lambdaError() },
|
||||
removeAvatarResult: () -> Result<Unit> = { lambdaError() },
|
||||
canUserJoinCallResult: (UserId) -> Result<Boolean> = { lambdaError() },
|
||||
getUpdatedMemberResult: (UserId) -> Result<RoomMember> = { lambdaError() },
|
||||
userRoleResult: () -> Result<RoomMember.Role> = { lambdaError() },
|
||||
kickUserResult: (UserId, String?) -> Result<Unit> = { _, _ -> lambdaError() },
|
||||
@@ -132,13 +121,9 @@ fun aJoinedRoom(
|
||||
baseRoom = aRoom(
|
||||
sessionId = sessionId,
|
||||
roomId = roomId,
|
||||
canInviteResult = canInviteResult,
|
||||
canBanResult = canBanResult,
|
||||
canKickResult = canKickResult,
|
||||
canSendStateResult = canSendStateResult,
|
||||
roomPermissions = roomPermissions,
|
||||
userDisplayNameResult = userDisplayNameResult,
|
||||
userAvatarUrlResult = userAvatarUrlResult,
|
||||
canUserJoinCallResult = canUserJoinCallResult,
|
||||
getUpdatedMemberResult = getUpdatedMemberResult,
|
||||
userRoleResult = userRoleResult,
|
||||
setIsFavoriteResult = setIsFavoriteResult,
|
||||
|
||||
@@ -30,6 +30,7 @@ import io.element.android.libraries.matrix.api.room.RoomMembersState
|
||||
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
||||
import io.element.android.libraries.matrix.api.room.StateEventType
|
||||
import io.element.android.libraries.matrix.api.room.join.JoinRule
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.RoomPermissions
|
||||
import io.element.android.libraries.matrix.test.AN_AVATAR_URL
|
||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||
import io.element.android.libraries.matrix.test.A_ROOM_NAME
|
||||
@@ -41,6 +42,7 @@ import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||
import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService
|
||||
import io.element.android.libraries.matrix.test.notificationsettings.FakeNotificationSettingsService
|
||||
import io.element.android.libraries.matrix.test.room.aRoomInfo
|
||||
import io.element.android.libraries.matrix.test.room.powerlevels.FakeRoomPermissions
|
||||
import io.element.android.libraries.preferences.api.store.AppPreferencesStore
|
||||
import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore
|
||||
import io.element.android.services.analytics.api.AnalyticsService
|
||||
@@ -119,9 +121,7 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - initial state is created from initial room info`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -148,9 +148,7 @@ class RoomDetailsPresenterTest {
|
||||
pinnedEventIds = listOf(AN_EVENT_ID),
|
||||
)
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
).apply {
|
||||
givenRoomInfo(roomInfo)
|
||||
}
|
||||
@@ -170,9 +168,7 @@ class RoomDetailsPresenterTest {
|
||||
fun `present - initial state with no room name`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
displayName = "",
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -188,9 +184,7 @@ class RoomDetailsPresenterTest {
|
||||
val myRoomMember = aRoomMember(A_SESSION_ID)
|
||||
val otherRoomMember = aRoomMember(A_USER_ID_2)
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
getUpdatedMemberResult = { userId ->
|
||||
when (userId) {
|
||||
A_SESSION_ID -> Result.success(myRoomMember)
|
||||
@@ -225,9 +219,9 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - initial state when user can invite others to room`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(
|
||||
canInvite = true,
|
||||
),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room, dispatchers = testCoroutineDispatchers())
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -243,26 +237,9 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - initial state when user can not invite others to room`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(false) },
|
||||
canKickResult = { Result.success(false) },
|
||||
canBanResult = { Result.success(false) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
assertThat(awaitItem().canInvite).isFalse()
|
||||
|
||||
cancelAndIgnoreRemainingEvents()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `present - initial state when canInvite errors`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.failure(RuntimeException("Whoops")) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(
|
||||
canInvite = false,
|
||||
),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -275,17 +252,11 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - initial state when user can edit one attribute`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canSendStateResult = { _, stateEventType ->
|
||||
when (stateEventType) {
|
||||
StateEventType.ROOM_TOPIC -> Result.success(true)
|
||||
StateEventType.ROOM_NAME -> Result.success(false)
|
||||
else -> Result.failure(RuntimeException("Whelp"))
|
||||
}
|
||||
},
|
||||
canBanResult = { Result.success(false) },
|
||||
canKickResult = { Result.success(false) },
|
||||
canInviteResult = { Result.success(false) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
roomPermissions = roomPermissions(
|
||||
canChangeName = true,
|
||||
canChangeTopic = false,
|
||||
canChangeAvatar = false,
|
||||
),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -303,18 +274,7 @@ class RoomDetailsPresenterTest {
|
||||
val myRoomMember = aRoomMember(A_SESSION_ID)
|
||||
val otherRoomMember = aRoomMember(A_USER_ID_2)
|
||||
val room = aJoinedRoom(
|
||||
canSendStateResult = { _, stateEventType ->
|
||||
when (stateEventType) {
|
||||
StateEventType.ROOM_TOPIC,
|
||||
StateEventType.ROOM_NAME,
|
||||
StateEventType.ROOM_AVATAR -> Result.success(true)
|
||||
else -> Result.failure(RuntimeException("Whelp"))
|
||||
}
|
||||
},
|
||||
canKickResult = { Result.success(false) },
|
||||
canBanResult = { Result.success(false) },
|
||||
canInviteResult = { Result.success(false) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
getUpdatedMemberResult = { userId ->
|
||||
when (userId) {
|
||||
A_SESSION_ID -> Result.success(myRoomMember)
|
||||
@@ -354,18 +314,9 @@ class RoomDetailsPresenterTest {
|
||||
val room = aJoinedRoom(
|
||||
isDirect = true,
|
||||
topic = null,
|
||||
canSendStateResult = { _, stateEventType ->
|
||||
when (stateEventType) {
|
||||
StateEventType.ROOM_AVATAR,
|
||||
StateEventType.ROOM_TOPIC,
|
||||
StateEventType.ROOM_NAME -> Result.success(true)
|
||||
else -> Result.failure(RuntimeException("Whelp"))
|
||||
}
|
||||
},
|
||||
roomPermissions = roomPermissions(),
|
||||
userDisplayNameResult = { Result.success(A_USER_NAME) },
|
||||
userAvatarUrlResult = { Result.success(AN_AVATAR_URL) },
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
getUpdatedMemberResult = { userId ->
|
||||
when (userId) {
|
||||
A_SESSION_ID -> Result.success(myRoomMember)
|
||||
@@ -400,24 +351,11 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - initial state when user can edit all attributes`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canSendStateResult = { _, stateEventType ->
|
||||
when (stateEventType) {
|
||||
StateEventType.ROOM_TOPIC,
|
||||
StateEventType.ROOM_NAME,
|
||||
StateEventType.ROOM_AVATAR -> Result.success(true)
|
||||
else -> Result.failure(RuntimeException("Whelp"))
|
||||
}
|
||||
},
|
||||
canKickResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canBanResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canInviteResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
roomPermissions = roomPermissions(
|
||||
canChangeAvatar = true,
|
||||
canChangeName = true,
|
||||
canChangeTopic = true,
|
||||
),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -433,24 +371,11 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - initial state when user can edit no attributes`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canSendStateResult = { _, stateEventType ->
|
||||
when (stateEventType) {
|
||||
StateEventType.ROOM_TOPIC,
|
||||
StateEventType.ROOM_NAME,
|
||||
StateEventType.ROOM_AVATAR -> Result.success(false)
|
||||
else -> Result.failure(RuntimeException("Whelp"))
|
||||
}
|
||||
},
|
||||
canBanResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canKickResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canInviteResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
roomPermissions = roomPermissions(
|
||||
canChangeAvatar = false,
|
||||
canChangeName = false,
|
||||
canChangeTopic = false,
|
||||
),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -465,24 +390,9 @@ class RoomDetailsPresenterTest {
|
||||
fun `present - topic state is hidden when no topic and user has no permission`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
topic = null,
|
||||
canSendStateResult = { _, stateEventType ->
|
||||
when (stateEventType) {
|
||||
StateEventType.ROOM_AVATAR,
|
||||
StateEventType.ROOM_NAME -> Result.success(true)
|
||||
StateEventType.ROOM_TOPIC -> Result.success(false)
|
||||
else -> Result.failure(RuntimeException("Whelp"))
|
||||
}
|
||||
},
|
||||
canKickResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canBanResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canInviteResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
roomPermissions = roomPermissions(
|
||||
canChangeTopic = false
|
||||
),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -497,24 +407,7 @@ class RoomDetailsPresenterTest {
|
||||
fun `present - topic state is 'can add topic' when no topic and user has permission`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
topic = null,
|
||||
canSendStateResult = { _, stateEventType ->
|
||||
when (stateEventType) {
|
||||
StateEventType.ROOM_AVATAR,
|
||||
StateEventType.ROOM_TOPIC,
|
||||
StateEventType.ROOM_NAME -> Result.success(true)
|
||||
else -> Result.failure(RuntimeException("Whelp"))
|
||||
}
|
||||
},
|
||||
canKickResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canBanResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canInviteResult = {
|
||||
Result.success(false)
|
||||
},
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
).apply {
|
||||
givenRoomInfo(aRoomInfo(topic = null))
|
||||
}
|
||||
@@ -534,9 +427,7 @@ class RoomDetailsPresenterTest {
|
||||
fun `present - leave room event is passed on to leave room presenter`() = runTest {
|
||||
val leaveRoomEventRecorder = EventsRecorder<LeaveRoomEvent>()
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(
|
||||
room = room,
|
||||
@@ -555,9 +446,7 @@ class RoomDetailsPresenterTest {
|
||||
val notificationSettingsService = FakeNotificationSettingsService()
|
||||
val room = aJoinedRoom(
|
||||
notificationSettingsService = notificationSettingsService,
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(
|
||||
room = room,
|
||||
@@ -584,9 +473,7 @@ class RoomDetailsPresenterTest {
|
||||
FakeNotificationSettingsService(initialRoomMode = RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY)
|
||||
val room = aJoinedRoom(
|
||||
notificationSettingsService = notificationSettingsService,
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(
|
||||
room = room,
|
||||
@@ -612,9 +499,7 @@ class RoomDetailsPresenterTest {
|
||||
)
|
||||
val room = aJoinedRoom(
|
||||
notificationSettingsService = notificationSettingsService,
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(
|
||||
room = room,
|
||||
@@ -637,9 +522,7 @@ class RoomDetailsPresenterTest {
|
||||
val setIsFavoriteResult = lambdaRecorder<Boolean, Result<Unit>> { _ -> Result.success(Unit) }
|
||||
val room = aJoinedRoom(
|
||||
setIsFavoriteResult = setIsFavoriteResult,
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val analyticsService = FakeAnalyticsService()
|
||||
val presenter =
|
||||
@@ -665,9 +548,7 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - changes in room info updates the is favorite flag`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val presenter = createRoomDetailsPresenter(room = room)
|
||||
presenter.testWithLifecycleOwner(lifecycleOwner = fakeLifecycleOwner) {
|
||||
@@ -686,9 +567,7 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - show knock requests`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
joinRule = JoinRule.Knock,
|
||||
)
|
||||
val featureFlagService = FakeFeatureFlagService(
|
||||
@@ -712,9 +591,7 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - show security and privacy`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val featureFlagService = FakeFeatureFlagService()
|
||||
val presenter = createRoomDetailsPresenter(room = room, featureFlagService = featureFlagService)
|
||||
@@ -729,9 +606,7 @@ class RoomDetailsPresenterTest {
|
||||
@Test
|
||||
fun `present - show debug info`() = runTest {
|
||||
val room = aJoinedRoom(
|
||||
canInviteResult = { Result.success(true) },
|
||||
canUserJoinCallResult = { Result.success(true) },
|
||||
canSendStateResult = { _, _ -> Result.success(true) },
|
||||
roomPermissions = roomPermissions(),
|
||||
)
|
||||
val inMemoryAppPreferencesStore = InMemoryAppPreferencesStore(
|
||||
isDeveloperModeEnabled = true,
|
||||
@@ -744,4 +619,41 @@ class RoomDetailsPresenterTest {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun roomPermissions(
|
||||
canInvite: Boolean = true,
|
||||
canKick: Boolean = true,
|
||||
canBan: Boolean = true,
|
||||
canRedactOther: Boolean = true,
|
||||
canRedactOwn: Boolean = true,
|
||||
canChangeRoomAccess: Boolean = true,
|
||||
canChangeHistoryVisibility: Boolean = true,
|
||||
canChangeEncryption: Boolean = true,
|
||||
canChangeRoomVisibility: Boolean = true,
|
||||
canChangeName: Boolean = true,
|
||||
canChangeTopic: Boolean = true,
|
||||
canChangeAvatar: Boolean = true,
|
||||
canChangePowerLevels: Boolean = true,
|
||||
): RoomPermissions {
|
||||
return FakeRoomPermissions(
|
||||
canInvite = canInvite,
|
||||
canKick = canKick,
|
||||
canBan = canBan,
|
||||
canRedactOther = canRedactOther,
|
||||
canRedactOwn = canRedactOwn,
|
||||
canSendState = { eventType ->
|
||||
when (eventType) {
|
||||
StateEventType.ROOM_JOIN_RULES -> canChangeRoomAccess
|
||||
StateEventType.ROOM_HISTORY_VISIBILITY -> canChangeHistoryVisibility
|
||||
StateEventType.ROOM_ENCRYPTION -> canChangeEncryption
|
||||
StateEventType.ROOM_CANONICAL_ALIAS -> canChangeRoomVisibility
|
||||
StateEventType.ROOM_AVATAR -> canChangeAvatar
|
||||
StateEventType.ROOM_NAME -> canChangeName
|
||||
StateEventType.ROOM_TOPIC -> canChangeTopic
|
||||
StateEventType.ROOM_POWER_LEVELS -> canChangePowerLevels
|
||||
else -> lambdaError()
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import com.google.common.truth.Truth.assertThat
|
||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||
import io.element.android.libraries.matrix.api.room.RoomMembersState
|
||||
import io.element.android.libraries.matrix.api.room.RoomMembershipState
|
||||
@@ -20,6 +19,7 @@ import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService
|
||||
import io.element.android.libraries.matrix.test.room.FakeBaseRoom
|
||||
import io.element.android.libraries.matrix.test.room.FakeJoinedRoom
|
||||
import io.element.android.libraries.matrix.test.room.aRoomInfo
|
||||
import io.element.android.libraries.matrix.test.room.powerlevels.FakeRoomPermissions
|
||||
import io.element.android.tests.testutils.WarmUpRule
|
||||
import io.element.android.tests.testutils.test
|
||||
import io.element.android.tests.testutils.testCoroutineDispatchers
|
||||
@@ -171,20 +171,7 @@ class RoomMemberListPresenterTest {
|
||||
fun `present - asynchronously sets canInvite when user does not have correct power level`() = runTest {
|
||||
val presenter = createPresenter(
|
||||
joinedRoom = createFakeJoinedRoom(
|
||||
canInviteResult = { Result.success(false) },
|
||||
)
|
||||
)
|
||||
presenter.test {
|
||||
val loadedState = awaitItem()
|
||||
assertThat(loadedState.canInvite).isFalse()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `present - asynchronously sets canInvite when power level check fails`() = runTest {
|
||||
val presenter = createPresenter(
|
||||
joinedRoom = createFakeJoinedRoom(
|
||||
canInviteResult = { Result.failure(RuntimeException("Eek")) },
|
||||
canInvite = false,
|
||||
)
|
||||
)
|
||||
presenter.test {
|
||||
@@ -207,12 +194,14 @@ class RoomMemberListPresenterTest {
|
||||
|
||||
private fun createFakeJoinedRoom(
|
||||
updateMembersResult: () -> Unit = { },
|
||||
canInviteResult: (UserId) -> Result<Boolean> = { Result.success(true) },
|
||||
canInvite: Boolean = true,
|
||||
): FakeJoinedRoom {
|
||||
return FakeJoinedRoom(
|
||||
baseRoom = FakeBaseRoom(
|
||||
updateMembersResult = updateMembersResult,
|
||||
canInviteResult = canInviteResult,
|
||||
roomPermissions = FakeRoomPermissions(
|
||||
canInvite = canInvite,
|
||||
),
|
||||
).apply {
|
||||
// Needed to avoid discarding the loaded members as a partial and invalid result
|
||||
givenRoomInfo(aRoomInfo(joinedMembersCount = 2))
|
||||
|
||||
Reference in New Issue
Block a user