mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-07 21:08:28 +00:00
testing the switch from banned to members when there are no more banned members
This commit is contained in:
@@ -105,7 +105,7 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
|||||||
self.currentUserProxy = members.first { $0.userID == roomProxy.ownUserID }
|
self.currentUserProxy = members.first { $0.userID == roomProxy.ownUserID }
|
||||||
|
|
||||||
var newBindings = state.bindings
|
var newBindings = state.bindings
|
||||||
if state.bindings.mode == .banned, roomMembersDetails.bannedMembers.count == 0 {
|
if roomMembersDetails.bannedMembers.count == 0 {
|
||||||
newBindings.mode = .members
|
newBindings.mode = .members
|
||||||
}
|
}
|
||||||
self.state = .init(joinedMembersCount: roomProxy.infoPublisher.value.joinedMembersCount,
|
self.state = .init(joinedMembersCount: roomProxy.infoPublisher.value.joinedMembersCount,
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ struct RoomMembersListScreen: View {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.background(.compound.bgCanvasDefault)
|
.background(.compound.bgCanvasDefaultLevel1)
|
||||||
.clipShape(sectionShape)
|
.clipShape(sectionShape)
|
||||||
.padding(.bottom, 32)
|
.padding(.bottom, 32)
|
||||||
} header: {
|
} header: {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
// Please see LICENSE files in the repository root for full details.
|
// Please see LICENSE files in the repository root for full details.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
import Combine
|
||||||
import XCTest
|
import XCTest
|
||||||
|
|
||||||
@testable import ElementX
|
@testable import ElementX
|
||||||
@@ -273,6 +274,25 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
|||||||
XCTAssertEqual(context.manageMemeberViewModel?.state.isMemberBanned, true)
|
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]) {
|
private func setup(with members: [RoomMemberProxyMock]) {
|
||||||
roomProxy = JoinedRoomProxyMock(.init(name: "test", members: members))
|
roomProxy = JoinedRoomProxyMock(.init(name: "test", members: members))
|
||||||
viewModel = .init(userSession: UserSessionMock(.init()),
|
viewModel = .init(userSession: UserSessionMock(.init()),
|
||||||
|
|||||||
Reference in New Issue
Block a user