testing the switch from banned to members when there are no more banned members

This commit is contained in:
Mauro Romito
2025-11-21 20:54:05 +01:00
committed by Mauro
parent bc7e00d753
commit 0f1ec310fa
3 changed files with 22 additions and 2 deletions

View File

@@ -105,7 +105,7 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
self.currentUserProxy = members.first { $0.userID == roomProxy.ownUserID }
var newBindings = state.bindings
if state.bindings.mode == .banned, roomMembersDetails.bannedMembers.count == 0 {
if roomMembersDetails.bannedMembers.count == 0 {
newBindings.mode = .members
}
self.state = .init(joinedMembersCount: roomProxy.infoPublisher.value.joinedMembersCount,

View File

@@ -77,7 +77,7 @@ struct RoomMembersListScreen: View {
})
}
}
.background(.compound.bgCanvasDefault)
.background(.compound.bgCanvasDefaultLevel1)
.clipShape(sectionShape)
.padding(.bottom, 32)
} header: {

View File

@@ -6,6 +6,7 @@
// Please see LICENSE files in the repository root for full details.
//
import Combine
import XCTest
@testable import ElementX
@@ -273,6 +274,25 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
XCTAssertEqual(context.manageMemeberViewModel?.state.isMemberBanned, true)
}
func testSwitchesToMembersModeWhenThereAreNoBannedMembers() async throws {
// Given the room list viewed as an admin.
roomProxy = JoinedRoomProxyMock(.init(name: "test"))
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([RoomMemberProxyMock].allMembersAsAdmin + RoomMemberProxyMock.mockBanned)
roomProxy.membersPublisher = subject.asCurrentValuePublisher()
viewModel = .init(userSession: UserSessionMock(.init()),
roomProxy: roomProxy,
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)
var deferred = deferFulfillment(context.$viewState) { $0.visibleBannedMembers.count == 4 && $0.bindings.mode == .banned }
context.mode = .banned
try await deferred.fulfill()
deferred = deferFulfillment(context.$viewState) { $0.visibleBannedMembers.count == 0 && $0.bindings.mode == .members }
subject.value = [RoomMemberProxyMock].allMembersAsAdmin
try await deferred.fulfill()
}
private func setup(with members: [RoomMemberProxyMock]) {
roomProxy = JoinedRoomProxyMock(.init(name: "test", members: members))
viewModel = .init(userSession: UserSessionMock(.init()),