mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 20:39:24 +00:00
Infer joined and active member count from the member list
* Infer joined and active member count from the member list, default the members to all mock members * Address PR comments, fix some tests and screenshots
This commit is contained in:
@@ -31,7 +31,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
override func setUp() {
|
||||
cancellables.removeAll()
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", joinedMembersCount: 0))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test"))
|
||||
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
@@ -88,6 +88,16 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testLeaveRoomTappedWithLessThanTwoMembers() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||
attributedStringBuilder: AttributedStringBuilder(permalinkBaseURL: ServiceLocator.shared.settings.permalinkBaseURL,
|
||||
mentionBuilder: MentionBuilder()))
|
||||
|
||||
context.send(viewAction: .processTapLeave)
|
||||
XCTAssertEqual(context.leaveRoomAlertItem?.state, .empty)
|
||||
XCTAssertEqual(context.leaveRoomAlertItem?.subtitle, L10n.leaveRoomAlertEmptySubtitle)
|
||||
@@ -131,7 +141,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
func testInitialDMDetailsState() async throws {
|
||||
let recipient = RoomMemberProxyMock.mockDan
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers, activeMembersCount: mockedMembers.count))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -157,7 +167,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers, activeMembersCount: mockedMembers.count))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -192,7 +202,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
return .failure(.ignoreUserFailed)
|
||||
}
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers, activeMembersCount: mockedMembers.count))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -228,7 +238,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
return .success(())
|
||||
}
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers, activeMembersCount: mockedMembers.count))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -263,7 +273,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
return .failure(.unignoreUserFailed)
|
||||
}
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers, activeMembersCount: mockedMembers.count))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -297,8 +307,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test",
|
||||
isPublic: true,
|
||||
members: mockedMembers,
|
||||
memberForID: .mockOwner(allowedStateEvents: [], canInviteUsers: false),
|
||||
activeMembersCount: mockedMembers.count))
|
||||
memberForID: .mockOwner(allowedStateEvents: [], canInviteUsers: false)))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -314,7 +323,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testInvitePeople() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isPublic: true, members: mockedMembers, activeMembersCount: mockedMembers.count))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isPublic: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(accountUserID: "@owner:somewhere.com",
|
||||
roomProxy: roomProxyMock,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
|
||||
@@ -69,7 +69,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testJoinedAndInvitedMembers() async throws {
|
||||
setup(with: [.mockInvitedAlice, .mockBob])
|
||||
setup(with: [.mockInvited, .mockBob])
|
||||
|
||||
let deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.visibleInvitedMembers.count == 1
|
||||
@@ -83,7 +83,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testInvitedMembers() async throws {
|
||||
setup(with: [.mockInvitedAlice])
|
||||
setup(with: [.mockInvited])
|
||||
|
||||
let deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.visibleInvitedMembers.count == 1
|
||||
@@ -97,9 +97,9 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testSearchInvitedMembers() async throws {
|
||||
setup(with: [.mockInvitedAlice])
|
||||
setup(with: [.mockInvited])
|
||||
|
||||
context.searchQuery = "alice"
|
||||
context.searchQuery = "invited"
|
||||
|
||||
let deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.visibleInvitedMembers.count == 1
|
||||
@@ -113,7 +113,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
private func setup(with members: [RoomMemberProxyMock]) {
|
||||
viewModel = .init(roomProxy: RoomProxyMock(with: .init(displayName: "test", members: members, joinedMembersCount: members.filter { $0.membership == .join }.count)),
|
||||
viewModel = .init(roomProxy: RoomProxyMock(with: .init(displayName: "test", members: members)),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
}
|
||||
|
||||
@@ -28,12 +28,12 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
|
||||
override func setUpWithError() throws {
|
||||
cancellables.removeAll()
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", joinedMembersCount: 0))
|
||||
roomProxyMock = RoomProxyMock(with: .init(displayName: "Test"))
|
||||
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
}
|
||||
|
||||
func testInitialStateDefaultModeEncryptedRoom() async throws {
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: true, joinedMembersCount: 0))
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: true))
|
||||
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
|
||||
@@ -55,7 +55,7 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testInitialStateDefaultModeEncryptedRoomWithCanPushEncrypted() async throws {
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: true, joinedMembersCount: 0))
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: true))
|
||||
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: .init(canPushEncryptedEvents: true))
|
||||
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
|
||||
@@ -77,7 +77,7 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testInitialStateDefaultModeUnencryptedRoom() async throws {
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: false, joinedMembersCount: 0))
|
||||
let roomProxyMock = RoomProxyMock(with: .init(displayName: "Test", isEncrypted: false))
|
||||
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
|
||||
|
||||
Reference in New Issue
Block a user