From 0f1ec310fad14f78b6522f9131df3d06a08e5ac0 Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Fri, 21 Nov 2025 20:54:05 +0100 Subject: [PATCH] testing the switch from banned to members when there are no more banned members --- .../RoomMembersListScreenViewModel.swift | 2 +- .../View/RoomMembersListScreen.swift | 2 +- .../RoomMembersListScreenViewModelTests.swift | 20 +++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ElementX/Sources/Screens/RoomMemberListScreen/RoomMembersListScreenViewModel.swift b/ElementX/Sources/Screens/RoomMemberListScreen/RoomMembersListScreenViewModel.swift index 1b027ca79..7970b402b 100644 --- a/ElementX/Sources/Screens/RoomMemberListScreen/RoomMembersListScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomMemberListScreen/RoomMembersListScreenViewModel.swift @@ -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, diff --git a/ElementX/Sources/Screens/RoomMemberListScreen/View/RoomMembersListScreen.swift b/ElementX/Sources/Screens/RoomMemberListScreen/View/RoomMembersListScreen.swift index 1907000f5..dd2b32b44 100644 --- a/ElementX/Sources/Screens/RoomMemberListScreen/View/RoomMembersListScreen.swift +++ b/ElementX/Sources/Screens/RoomMemberListScreen/View/RoomMembersListScreen.swift @@ -77,7 +77,7 @@ struct RoomMembersListScreen: View { }) } } - .background(.compound.bgCanvasDefault) + .background(.compound.bgCanvasDefaultLevel1) .clipShape(sectionShape) .padding(.bottom, 32) } header: { diff --git a/UnitTests/Sources/RoomMembersListScreenViewModelTests.swift b/UnitTests/Sources/RoomMembersListScreenViewModelTests.swift index 14911a481..103667eed 100644 --- a/UnitTests/Sources/RoomMembersListScreenViewModelTests.swift +++ b/UnitTests/Sources/RoomMembersListScreenViewModelTests.swift @@ -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()),