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 26add890d6
commit 414b3ac815
3 changed files with 22 additions and 2 deletions
@@ -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()),