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:
Stefan Ceriu
2024-02-07 19:10:15 +02:00
committed by GitHub
parent d0c835a9bf
commit c32015278e
15 changed files with 98 additions and 75 deletions
@@ -42,6 +42,15 @@ extension RoomMemberProxyMock {
}
// Mocks
static var mockMe: RoomMemberProxyMock {
RoomMemberProxyMock(with: .init(userID: "@me:matrix.org",
displayName: "Me",
avatarURL: URL.picturesDirectory,
membership: .join,
isAccountOwner: true,
canInviteUsers: true))
}
static var mockAlice: RoomMemberProxyMock {
RoomMemberProxyMock(with: .init(userID: "@alice:matrix.org",
displayName: "Alice",
@@ -76,14 +85,13 @@ extension RoomMemberProxyMock {
avatarURL: URL.picturesDirectory,
membership: .join))
}
static var mockMe: RoomMemberProxyMock {
RoomMemberProxyMock(with: .init(userID: "@me:matrix.org",
displayName: "Me",
avatarURL: URL.picturesDirectory,
membership: .join,
isAccountOwner: true,
canInviteUsers: true))
static var mockInvited: RoomMemberProxyMock {
RoomMemberProxyMock(with: .init(userID: "@invited:matrix.org",
displayName: "Invited",
avatarURL: nil,
membership: .invite,
isIgnored: true))
}
static var mockIgnored: RoomMemberProxyMock {
@@ -103,3 +111,15 @@ extension RoomMemberProxyMock {
canSendStateEvent: { allowedStateEvents.contains($0) }))
}
}
extension Array where Element == RoomMemberProxyMock {
static let allMembers: [RoomMemberProxyMock] = [
.mockMe,
.mockAlice,
.mockBob,
.mockCharlie,
.mockDan,
.mockInvited,
.mockIgnored
]
}
+9 -15
View File
@@ -23,9 +23,9 @@ struct RoomProxyMockConfiguration {
let displayName: String?
var topic: String?
var avatarURL: URL?
var isDirect = Bool.random()
var isSpace = Bool.random()
var isPublic = Bool.random()
var isDirect = false
var isSpace = false
var isPublic = false
var isEncrypted = true
var hasOngoingCall = true
var canonicalAlias: String?
@@ -37,15 +37,12 @@ struct RoomProxyMockConfiguration {
return mock
}()
var members: [RoomMemberProxyProtocol]?
var members: [RoomMemberProxyMock] = .allMembers
var memberForID: RoomMemberProxyMock = .mockMe
var ownUserID = "@alice:somewhere.org"
var canUserTriggerRoomNotification = false
var canUserJoinCall = true
var joinedMembersCount = 50
var activeMembersCount = 25
}
extension RoomProxyMock {
@@ -66,15 +63,12 @@ extension RoomProxyMock {
timeline = configuration.timeline
joinedMembersCount = configuration.joinedMembersCount
activeMembersCount = configuration.activeMembersCount
ownUserID = configuration.ownUserID
if let configuredMembers = configuration.members {
members = CurrentValueSubject(configuredMembers).asCurrentValuePublisher()
} else {
members = CurrentValueSubject([]).asCurrentValuePublisher()
}
members = CurrentValueSubject(configuration.members).asCurrentValuePublisher()
joinedMembersCount = configuration.members.filter { $0.membership == .join }.count
activeMembersCount = configuration.members.filter { $0.membership == .join || $0.membership == .invite }.count
updateMembersClosure = { }
acceptInvitationClosure = { .success(()) }