Skip to content

Commit d26f21a

Browse files
committed
misc(power level) : update tests following api change
1 parent 541a1d2 commit d26f21a

File tree

25 files changed

+475
-637
lines changed

25 files changed

+475
-637
lines changed

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ import timber.log.Timber
9999
import kotlin.time.Duration.Companion.seconds
100100
import io.element.android.libraries.core.mimetype.MimeTypes.Any as AnyMimeTypes
101101

102+
@Suppress("LargeClass")
102103
@AssistedInject
103104
class MessageComposerPresenter(
104105
@Assisted private val navigator: MessagesNavigator,
@@ -397,7 +398,7 @@ class MessageComposerPresenter(
397398
val currentUserId = room.sessionId
398399

399400
suspend fun canSendRoomMention(): Boolean {
400-
val userCanSendAtRoom = room.roomPermissions().use(false){ perms ->
401+
val userCanSendAtRoom = room.roomPermissions().use(false) { perms ->
401402
perms.canOwnUserTriggerRoomNotification()
402403
}
403404
return !room.isDm() && userCanSendAtRoom

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import io.element.android.features.poll.api.actions.EndPollAction
3939
import io.element.android.features.poll.api.actions.SendPollResponseAction
4040
import io.element.android.features.roomcall.api.RoomCallState
4141
import io.element.android.libraries.architecture.Presenter
42-
import io.element.android.libraries.core.bool.orFalse
4342
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
4443
import io.element.android.libraries.di.annotations.SessionCoroutineScope
4544
import io.element.android.libraries.featureflag.api.FeatureFlagService
@@ -96,6 +95,7 @@ class TimelinePresenter(
9695
private val analyticsService: AnalyticsService,
9796
) : Presenter<TimelineState> {
9897
private val tag = "TimelinePresenter"
98+
9999
@AssistedFactory
100100
interface Factory {
101101
fun create(

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt

Lines changed: 69 additions & 127 deletions
Large diffs are not rendered by default.

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenterTest.kt

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ import io.element.android.libraries.matrix.test.room.FakeBaseRoom
6969
import io.element.android.libraries.matrix.test.room.FakeJoinedRoom
7070
import io.element.android.libraries.matrix.test.room.aRoomInfo
7171
import io.element.android.libraries.matrix.test.room.aRoomMember
72+
import io.element.android.libraries.matrix.test.room.powerlevels.FakeRoomPermissions
7273
import io.element.android.libraries.matrix.test.timeline.FakeTimeline
7374
import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails
7475
import io.element.android.libraries.mediapickers.api.PickerProvider
@@ -991,9 +992,12 @@ class MessageComposerPresenterTest {
991992
val invitedUser = aRoomMember(userId = A_USER_ID_3, membership = RoomMembershipState.INVITE)
992993
val bob = aRoomMember(userId = A_USER_ID_2, membership = RoomMembershipState.JOIN)
993994
val david = aRoomMember(userId = A_USER_ID_4, displayName = "Dave", membership = RoomMembershipState.JOIN)
994-
var canUserTriggerRoomNotificationResult = true
995995
val room = FakeJoinedRoom(
996-
baseRoom = FakeBaseRoom(canUserTriggerRoomNotificationResult = { Result.success(canUserTriggerRoomNotificationResult) }),
996+
baseRoom = FakeBaseRoom(
997+
roomPermissions = FakeRoomPermissions(
998+
canTriggerRoomNotification = true,
999+
)
1000+
),
9971001
typingNoticeResult = { Result.success(Unit) }
9981002
).apply {
9991003
givenRoomMembersState(
@@ -1033,10 +1037,38 @@ class MessageComposerPresenterTest {
10331037
// If the suggestion isn't a mention, no suggestions are returned
10341038
initialState.eventSink(MessageComposerEvent.SuggestionReceived(Suggestion(0, 0, SuggestionType.Command, "")))
10351039
assertThat(awaitItem().suggestions).isEmpty()
1040+
}
1041+
}
10361042

1037-
// If user has no permission to send `@room` mentions, `RoomMemberSuggestion.Room` is not returned
1038-
canUserTriggerRoomNotificationResult = false
1043+
@Test
1044+
fun `present - room mention suggestions no permission`() = runTest {
1045+
val currentUser = aRoomMember(userId = A_USER_ID, membership = RoomMembershipState.JOIN)
1046+
val invitedUser = aRoomMember(userId = A_USER_ID_3, membership = RoomMembershipState.INVITE)
1047+
val bob = aRoomMember(userId = A_USER_ID_2, membership = RoomMembershipState.JOIN)
1048+
val david = aRoomMember(userId = A_USER_ID_4, displayName = "Dave", membership = RoomMembershipState.JOIN)
1049+
val room = FakeJoinedRoom(
1050+
baseRoom = FakeBaseRoom(
1051+
roomPermissions = FakeRoomPermissions(
1052+
canTriggerRoomNotification = false,
1053+
)
1054+
),
1055+
typingNoticeResult = { Result.success(Unit) }
1056+
).apply {
1057+
givenRoomMembersState(
1058+
RoomMembersState.Ready(
1059+
persistentListOf(currentUser, invitedUser, bob, david),
1060+
)
1061+
)
1062+
givenRoomInfo(aRoomInfo(isDirect = false))
1063+
}
1064+
val presenter = createPresenter(room)
1065+
moleculeFlow(RecompositionMode.Immediate) {
1066+
presenter.present()
1067+
}.test {
1068+
val initialState = awaitItem()
1069+
// An empty suggestion returns the joined members that are not the current user, but not the room
10391070
initialState.eventSink(MessageComposerEvent.SuggestionReceived(Suggestion(0, 0, SuggestionType.Mention, "")))
1071+
skipItems(1)
10401072
assertThat(awaitItem().suggestions)
10411073
.containsExactly(ResolvedSuggestion.Member(bob), ResolvedSuggestion.Member(david))
10421074
}
@@ -1049,7 +1081,9 @@ class MessageComposerPresenterTest {
10491081
val bob = aRoomMember(userId = A_USER_ID_2, membership = RoomMembershipState.JOIN)
10501082
val david = aRoomMember(userId = A_USER_ID_4, displayName = "Dave", membership = RoomMembershipState.JOIN)
10511083
val room = FakeJoinedRoom(
1052-
baseRoom = FakeBaseRoom(canUserTriggerRoomNotificationResult = { Result.success(true) }),
1084+
baseRoom = FakeBaseRoom(
1085+
roomPermissions = FakeRoomPermissions(canTriggerRoomNotification = true),
1086+
),
10531087
typingNoticeResult = { Result.success(Unit) }
10541088
).apply {
10551089
givenRoomMembersState(
@@ -1069,7 +1103,6 @@ class MessageComposerPresenterTest {
10691103
presenter.present()
10701104
}.test {
10711105
val initialState = awaitItem()
1072-
10731106
// An empty suggestion returns the joined members that are not the current user, but not the room
10741107
initialState.eventSink(MessageComposerEvent.SuggestionReceived(Suggestion(0, 0, SuggestionType.Mention, "")))
10751108
skipItems(1)

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import io.element.android.libraries.matrix.test.A_UNIQUE_ID
3131
import io.element.android.libraries.matrix.test.room.FakeBaseRoom
3232
import io.element.android.libraries.matrix.test.room.FakeJoinedRoom
3333
import io.element.android.libraries.matrix.test.room.aRoomInfo
34+
import io.element.android.libraries.matrix.test.room.powerlevels.FakeRoomPermissions
3435
import io.element.android.libraries.matrix.test.sync.FakeSyncService
3536
import io.element.android.libraries.matrix.test.timeline.FakeTimeline
3637
import io.element.android.libraries.matrix.test.timeline.aMessageContent
@@ -55,9 +56,7 @@ class PinnedMessagesListPresenterTest {
5556
fun `present - initial state`() = runTest {
5657
val room = FakeJoinedRoom(
5758
baseRoom = FakeBaseRoom(
58-
canRedactOwnResult = { Result.success(true) },
59-
canRedactOtherResult = { Result.success(true) },
60-
canUserPinUnpinResult = { Result.success(true) },
59+
roomPermissions = roomPermissions(),
6160
).apply {
6261
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
6362
}
@@ -74,9 +73,7 @@ class PinnedMessagesListPresenterTest {
7473
fun `present - timeline failure state`() = runTest {
7574
val room = FakeJoinedRoom(
7675
baseRoom = FakeBaseRoom(
77-
canRedactOwnResult = { Result.success(true) },
78-
canRedactOtherResult = { Result.success(true) },
79-
canUserPinUnpinResult = { Result.success(true) },
76+
roomPermissions = roomPermissions(),
8077
).apply {
8178
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
8279
},
@@ -95,9 +92,7 @@ class PinnedMessagesListPresenterTest {
9592
fun `present - empty state`() = runTest {
9693
val room = FakeJoinedRoom(
9794
baseRoom = FakeBaseRoom(
98-
canRedactOwnResult = { Result.success(true) },
99-
canRedactOtherResult = { Result.success(true) },
100-
canUserPinUnpinResult = { Result.success(true) },
95+
roomPermissions = roomPermissions(),
10196
).apply {
10297
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf()))
10398
},
@@ -117,9 +112,7 @@ class PinnedMessagesListPresenterTest {
117112
val pinnedEventsTimeline = createPinnedMessagesTimeline()
118113
val room = FakeJoinedRoom(
119114
baseRoom = FakeBaseRoom(
120-
canRedactOwnResult = { Result.success(true) },
121-
canRedactOtherResult = { Result.success(true) },
122-
canUserPinUnpinResult = { Result.success(true) },
115+
roomPermissions = roomPermissions(),
123116
).apply {
124117
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
125118
},
@@ -146,9 +139,7 @@ class PinnedMessagesListPresenterTest {
146139
val analyticsService = FakeAnalyticsService()
147140
val room = FakeJoinedRoom(
148141
baseRoom = FakeBaseRoom(
149-
canRedactOwnResult = { Result.success(true) },
150-
canRedactOtherResult = { Result.success(true) },
151-
canUserPinUnpinResult = { Result.success(true) },
142+
roomPermissions = roomPermissions(),
152143
).apply {
153144
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
154145
},
@@ -194,9 +185,7 @@ class PinnedMessagesListPresenterTest {
194185
val pinnedEventsTimeline = createPinnedMessagesTimeline()
195186
val room = FakeJoinedRoom(
196187
baseRoom = FakeBaseRoom(
197-
canRedactOwnResult = { Result.success(true) },
198-
canRedactOtherResult = { Result.success(true) },
199-
canUserPinUnpinResult = { Result.success(true) },
188+
roomPermissions = roomPermissions(),
200189
).apply {
201190
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
202191
},
@@ -225,9 +214,7 @@ class PinnedMessagesListPresenterTest {
225214
val pinnedEventsTimeline = createPinnedMessagesTimeline()
226215
val room = FakeJoinedRoom(
227216
baseRoom = FakeBaseRoom(
228-
canRedactOwnResult = { Result.success(true) },
229-
canRedactOtherResult = { Result.success(true) },
230-
canUserPinUnpinResult = { Result.success(true) },
217+
roomPermissions = roomPermissions(),
231218
).apply {
232219
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
233220
},
@@ -256,9 +243,7 @@ class PinnedMessagesListPresenterTest {
256243
val pinnedEventsTimeline = createPinnedMessagesTimeline()
257244
val room = FakeJoinedRoom(
258245
baseRoom = FakeBaseRoom(
259-
canRedactOwnResult = { Result.success(true) },
260-
canRedactOtherResult = { Result.success(true) },
261-
canUserPinUnpinResult = { Result.success(true) },
246+
roomPermissions = roomPermissions(),
262247
).apply {
263248
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
264249
},
@@ -295,6 +280,16 @@ class PinnedMessagesListPresenterTest {
295280
)
296281
}
297282

283+
private fun roomPermissions(
284+
canRedactOther: Boolean = true,
285+
canRedactOwn: Boolean = true,
286+
canPinUnpin: Boolean = true,
287+
) = FakeRoomPermissions(
288+
canRedactOther = canRedactOther,
289+
canRedactOwn = canRedactOwn,
290+
canPinUnpin = canPinUnpin,
291+
)
292+
298293
private fun TestScope.createPinnedMessagesListPresenter(
299294
navigator: PinnedMessagesListNavigator = FakePinnedMessagesListNavigator(),
300295
room: JoinedRoom = FakeJoinedRoom(),

0 commit comments

Comments
 (0)