168 lines
6.1 KiB
Swift
168 lines
6.1 KiB
Swift
//
|
|
// Copyright 2023 New Vector Ltd
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
import Foundation
|
|
import MatrixRustSDK
|
|
|
|
struct RoomMemberProxyMockConfiguration {
|
|
var userID: String
|
|
var displayName: String?
|
|
var avatarURL: URL?
|
|
|
|
var membership: MembershipState
|
|
var isIgnored = false
|
|
|
|
var powerLevel = 0
|
|
var role = RoomMemberRole.user
|
|
}
|
|
|
|
extension RoomMemberProxyMock {
|
|
convenience init(with configuration: RoomMemberProxyMockConfiguration) {
|
|
self.init()
|
|
userID = configuration.userID
|
|
displayName = configuration.displayName
|
|
avatarURL = configuration.avatarURL
|
|
|
|
membership = configuration.membership
|
|
isIgnored = configuration.isIgnored
|
|
|
|
powerLevel = configuration.powerLevel
|
|
role = configuration.role
|
|
}
|
|
|
|
// Mocks
|
|
static var mockMe: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@me:matrix.org",
|
|
displayName: "Me",
|
|
avatarURL: URL.picturesDirectory,
|
|
membership: .join))
|
|
}
|
|
|
|
static var mockMeAdmin: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@me:matrix.org",
|
|
displayName: "Me admin",
|
|
avatarURL: URL.picturesDirectory,
|
|
membership: .join,
|
|
powerLevel: 100,
|
|
role: .administrator))
|
|
}
|
|
|
|
static var mockAlice: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@alice:matrix.org",
|
|
displayName: "Alice",
|
|
membership: .join))
|
|
}
|
|
|
|
static var mockInvitedAlice: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@alice:matrix.org",
|
|
displayName: "Alice",
|
|
membership: .invite))
|
|
}
|
|
|
|
static var mockBob: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@bob:matrix.org",
|
|
displayName: "Bob",
|
|
membership: .join))
|
|
}
|
|
|
|
static var mockCharlie: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@charlie:matrix.org",
|
|
displayName: "Charlie",
|
|
membership: .join))
|
|
}
|
|
|
|
static var mockDan: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@dan:matrix.org",
|
|
displayName: "Dan",
|
|
avatarURL: URL.picturesDirectory,
|
|
membership: .join))
|
|
}
|
|
|
|
static var mockVerbose: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@charliev:matrix.org",
|
|
displayName: "Charlie is the best display name",
|
|
membership: .join))
|
|
}
|
|
|
|
static var mockInvited: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@invited:matrix.org",
|
|
displayName: "Invited",
|
|
membership: .invite,
|
|
isIgnored: true))
|
|
}
|
|
|
|
static var mockIgnored: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@ignored:matrix.org",
|
|
displayName: "Ignored",
|
|
membership: .join,
|
|
isIgnored: true))
|
|
}
|
|
|
|
static var mockAdmin: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@admin:matrix.org",
|
|
displayName: "Arthur",
|
|
membership: .join,
|
|
powerLevel: 100,
|
|
role: .administrator))
|
|
}
|
|
|
|
static var mockModerator: RoomMemberProxyMock {
|
|
RoomMemberProxyMock(with: .init(userID: "@mod:matrix.org",
|
|
displayName: "Merlin",
|
|
membership: .join,
|
|
powerLevel: 50,
|
|
role: .moderator))
|
|
}
|
|
|
|
static var mockBanned: [RoomMemberProxyMock] {
|
|
[
|
|
RoomMemberProxyMock(with: .init(userID: "@mischief:matrix.org",
|
|
membership: .ban)),
|
|
RoomMemberProxyMock(with: .init(userID: "@spam:matrix.org",
|
|
membership: .ban)),
|
|
RoomMemberProxyMock(with: .init(userID: "@angry:matrix.org",
|
|
membership: .ban)),
|
|
RoomMemberProxyMock(with: .init(userID: "@fake:matrix.org",
|
|
displayName: "The President",
|
|
membership: .ban))
|
|
]
|
|
}
|
|
}
|
|
|
|
extension Array where Element == RoomMemberProxyMock {
|
|
static let allMembers: [RoomMemberProxyMock] = [
|
|
.mockMe,
|
|
.mockAlice,
|
|
.mockBob,
|
|
.mockCharlie,
|
|
.mockDan,
|
|
.mockInvited,
|
|
.mockIgnored
|
|
]
|
|
|
|
static let allMembersAsAdmin: [RoomMemberProxyMock] = [
|
|
.mockMeAdmin,
|
|
.mockAlice,
|
|
.mockBob,
|
|
.mockCharlie,
|
|
.mockDan,
|
|
.mockInvited,
|
|
.mockIgnored,
|
|
.mockAdmin,
|
|
.mockModerator
|
|
]
|
|
}
|