@@ -18,6 +18,7 @@ import io.element.android.libraries.core.coroutine.CoroutineDispatchers
18
18
import io.element.android.libraries.matrix.api.room.JoinedRoom
19
19
import io.element.android.libraries.matrix.api.room.RoomMember
20
20
import io.element.android.libraries.matrix.api.room.RoomMembersState
21
+ import io.element.android.libraries.matrix.api.room.RoomMembershipState
21
22
import io.element.android.libraries.matrix.api.user.MatrixUser
22
23
import io.element.android.libraries.matrix.test.A_USER_ID
23
24
import io.element.android.libraries.matrix.test.room.FakeBaseRoom
@@ -141,6 +142,28 @@ class RoomMemberModerationPresenterTest {
141
142
}
142
143
}
143
144
145
+ @Test
146
+ fun `show actions when canBan=true, canKick=true, userRole=Moderator and target is Banned` () = runTest {
147
+ val room = aJoinedRoom(
148
+ canBan = true ,
149
+ canKick = true ,
150
+ myUserRole = RoomMember .Role .MODERATOR ,
151
+ targetRoomMember = aRoomMember(userId = A_USER_ID , membership = RoomMembershipState .BAN )
152
+ )
153
+ createRoomMemberModerationPresenter(room = room).test {
154
+ val initialState = awaitState()
155
+ initialState.eventSink(RoomMemberModerationEvents .ShowActionsForUser (targetUser))
156
+ skipItems(2 )
157
+ val updatedState = awaitState()
158
+ assertThat(updatedState.selectedUser).isEqualTo(targetUser)
159
+ assertThat(updatedState.actions).containsExactly(
160
+ ModerationActionState (action = ModerationAction .DisplayProfile , isEnabled = true ),
161
+ ModerationActionState (action = ModerationAction .KickUser , isEnabled = false ),
162
+ ModerationActionState (action = ModerationAction .UnbanUser , isEnabled = true ),
163
+ )
164
+ }
165
+ }
166
+
144
167
@Test
145
168
fun `present - process kick action sets confirming state` () = runTest {
146
169
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
0 commit comments