Update the SDK and handle breaking changes. (#2527)

This commit is contained in:
Doug
2024-03-05 14:08:34 +00:00
committed by GitHub
parent 4320e5c9e0
commit 1b5db6c63d
39 changed files with 455 additions and 504 deletions
+3 -3
View File
@@ -18,7 +18,7 @@ import Combine
import Foundation
struct ClientProxyMockConfiguration {
let userID: String
var userID: String = RoomMemberProxyMock.mockMe.userID
var deviceID: String?
var roomSummaryProvider: RoomSummaryProviderProtocol? = RoomSummaryProviderMock(.init())
}
@@ -62,8 +62,8 @@ extension ClientProxyMock {
searchUsersSearchTermLimitReturnValue = .success(.init(results: [], limited: false))
profileForReturnValue = .success(.init(userID: "@a:b.com", displayName: "Some user"))
sessionVerificationControllerProxyReturnValue = .failure(.failedRetrievingSessionVerificationController)
ignoreUserReturnValue = .failure(.failedIgnoringUser)
unignoreUserReturnValue = .failure(.failedUnignoringUser)
ignoreUserReturnValue = .success(())
unignoreUserReturnValue = .success(())
loadMediaContentForSourceThrowableError = ClientProxyError.failedLoadingMedia
loadMediaThumbnailForSourceWidthHeightThrowableError = ClientProxyError.failedLoadingMedia
@@ -2253,11 +2253,6 @@ class RoomMemberProxyMock: RoomMemberProxyProtocol {
set(value) { underlyingMembership = value }
}
var underlyingMembership: MembershipState!
var isAccountOwner: Bool {
get { return underlyingIsAccountOwner }
set(value) { underlyingIsAccountOwner = value }
}
var underlyingIsAccountOwner: Bool!
var isIgnored: Bool {
get { return underlyingIsIgnored }
set(value) { underlyingIsIgnored = value }
@@ -2273,77 +2268,7 @@ class RoomMemberProxyMock: RoomMemberProxyProtocol {
set(value) { underlyingRole = value }
}
var underlyingRole: RoomMemberRole!
var canInviteUsers: Bool {
get { return underlyingCanInviteUsers }
set(value) { underlyingCanInviteUsers = value }
}
var underlyingCanInviteUsers: Bool!
var canKickUsers: Bool {
get { return underlyingCanKickUsers }
set(value) { underlyingCanKickUsers = value }
}
var underlyingCanKickUsers: Bool!
var canBanUsers: Bool {
get { return underlyingCanBanUsers }
set(value) { underlyingCanBanUsers = value }
}
var underlyingCanBanUsers: Bool!
//MARK: - ignoreUser
var ignoreUserCallsCount = 0
var ignoreUserCalled: Bool {
return ignoreUserCallsCount > 0
}
var ignoreUserReturnValue: Result<Void, RoomMemberProxyError>!
var ignoreUserClosure: (() async -> Result<Void, RoomMemberProxyError>)?
func ignoreUser() async -> Result<Void, RoomMemberProxyError> {
ignoreUserCallsCount += 1
if let ignoreUserClosure = ignoreUserClosure {
return await ignoreUserClosure()
} else {
return ignoreUserReturnValue
}
}
//MARK: - unignoreUser
var unignoreUserCallsCount = 0
var unignoreUserCalled: Bool {
return unignoreUserCallsCount > 0
}
var unignoreUserReturnValue: Result<Void, RoomMemberProxyError>!
var unignoreUserClosure: (() async -> Result<Void, RoomMemberProxyError>)?
func unignoreUser() async -> Result<Void, RoomMemberProxyError> {
unignoreUserCallsCount += 1
if let unignoreUserClosure = unignoreUserClosure {
return await unignoreUserClosure()
} else {
return unignoreUserReturnValue
}
}
//MARK: - canSendStateEvent
var canSendStateEventTypeCallsCount = 0
var canSendStateEventTypeCalled: Bool {
return canSendStateEventTypeCallsCount > 0
}
var canSendStateEventTypeReceivedType: StateEventType?
var canSendStateEventTypeReceivedInvocations: [StateEventType] = []
var canSendStateEventTypeReturnValue: Bool!
var canSendStateEventTypeClosure: ((StateEventType) -> Bool)?
func canSendStateEvent(type: StateEventType) -> Bool {
canSendStateEventTypeCallsCount += 1
canSendStateEventTypeReceivedType = type
canSendStateEventTypeReceivedInvocations.append(type)
if let canSendStateEventTypeClosure = canSendStateEventTypeClosure {
return canSendStateEventTypeClosure(type)
} else {
return canSendStateEventTypeReturnValue
}
}
}
class RoomNotificationSettingsProxyMock: RoomNotificationSettingsProxyProtocol {
var mode: RoomNotificationModeProxy {
@@ -2517,27 +2442,6 @@ class RoomProxyMock: RoomProxyProtocol {
return reportContentReasonReturnValue
}
}
//MARK: - ignoreUser
var ignoreUserCallsCount = 0
var ignoreUserCalled: Bool {
return ignoreUserCallsCount > 0
}
var ignoreUserReceivedUserID: String?
var ignoreUserReceivedInvocations: [String] = []
var ignoreUserReturnValue: Result<Void, RoomProxyError>!
var ignoreUserClosure: ((String) async -> Result<Void, RoomProxyError>)?
func ignoreUser(_ userID: String) async -> Result<Void, RoomProxyError> {
ignoreUserCallsCount += 1
ignoreUserReceivedUserID = userID
ignoreUserReceivedInvocations.append(userID)
if let ignoreUserClosure = ignoreUserClosure {
return await ignoreUserClosure(userID)
} else {
return ignoreUserReturnValue
}
}
//MARK: - leaveRoom
var leaveRoomCallsCount = 0
@@ -2846,6 +2750,48 @@ class RoomProxyMock: RoomProxyProtocol {
return applyPowerLevelChangesReturnValue
}
}
//MARK: - canUser
var canUserUserIDSendStateEventCallsCount = 0
var canUserUserIDSendStateEventCalled: Bool {
return canUserUserIDSendStateEventCallsCount > 0
}
var canUserUserIDSendStateEventReceivedArguments: (userID: String, event: StateEventType)?
var canUserUserIDSendStateEventReceivedInvocations: [(userID: String, event: StateEventType)] = []
var canUserUserIDSendStateEventReturnValue: Result<Bool, RoomProxyError>!
var canUserUserIDSendStateEventClosure: ((String, StateEventType) async -> Result<Bool, RoomProxyError>)?
func canUser(userID: String, sendStateEvent event: StateEventType) async -> Result<Bool, RoomProxyError> {
canUserUserIDSendStateEventCallsCount += 1
canUserUserIDSendStateEventReceivedArguments = (userID: userID, event: event)
canUserUserIDSendStateEventReceivedInvocations.append((userID: userID, event: event))
if let canUserUserIDSendStateEventClosure = canUserUserIDSendStateEventClosure {
return await canUserUserIDSendStateEventClosure(userID, event)
} else {
return canUserUserIDSendStateEventReturnValue
}
}
//MARK: - canUserInvite
var canUserInviteUserIDCallsCount = 0
var canUserInviteUserIDCalled: Bool {
return canUserInviteUserIDCallsCount > 0
}
var canUserInviteUserIDReceivedUserID: String?
var canUserInviteUserIDReceivedInvocations: [String] = []
var canUserInviteUserIDReturnValue: Result<Bool, RoomProxyError>!
var canUserInviteUserIDClosure: ((String) async -> Result<Bool, RoomProxyError>)?
func canUserInvite(userID: String) async -> Result<Bool, RoomProxyError> {
canUserInviteUserIDCallsCount += 1
canUserInviteUserIDReceivedUserID = userID
canUserInviteUserIDReceivedInvocations.append(userID)
if let canUserInviteUserIDClosure = canUserInviteUserIDClosure {
return await canUserInviteUserIDClosure(userID)
} else {
return canUserInviteUserIDReturnValue
}
}
//MARK: - canUserRedactOther
var canUserRedactOtherUserIDCallsCount = 0
@@ -2888,6 +2834,48 @@ class RoomProxyMock: RoomProxyProtocol {
return canUserRedactOwnUserIDReturnValue
}
}
//MARK: - canUserKick
var canUserKickUserIDCallsCount = 0
var canUserKickUserIDCalled: Bool {
return canUserKickUserIDCallsCount > 0
}
var canUserKickUserIDReceivedUserID: String?
var canUserKickUserIDReceivedInvocations: [String] = []
var canUserKickUserIDReturnValue: Result<Bool, RoomProxyError>!
var canUserKickUserIDClosure: ((String) async -> Result<Bool, RoomProxyError>)?
func canUserKick(userID: String) async -> Result<Bool, RoomProxyError> {
canUserKickUserIDCallsCount += 1
canUserKickUserIDReceivedUserID = userID
canUserKickUserIDReceivedInvocations.append(userID)
if let canUserKickUserIDClosure = canUserKickUserIDClosure {
return await canUserKickUserIDClosure(userID)
} else {
return canUserKickUserIDReturnValue
}
}
//MARK: - canUserBan
var canUserBanUserIDCallsCount = 0
var canUserBanUserIDCalled: Bool {
return canUserBanUserIDCallsCount > 0
}
var canUserBanUserIDReceivedUserID: String?
var canUserBanUserIDReceivedInvocations: [String] = []
var canUserBanUserIDReturnValue: Result<Bool, RoomProxyError>!
var canUserBanUserIDClosure: ((String) async -> Result<Bool, RoomProxyError>)?
func canUserBan(userID: String) async -> Result<Bool, RoomProxyError> {
canUserBanUserIDCallsCount += 1
canUserBanUserIDReceivedUserID = userID
canUserBanUserIDReceivedInvocations.append(userID)
if let canUserBanUserIDClosure = canUserBanUserIDClosure {
return await canUserBanUserIDClosure(userID)
} else {
return canUserBanUserIDReturnValue
}
}
//MARK: - canUserTriggerRoomNotification
var canUserTriggerRoomNotificationUserIDCallsCount = 0
@@ -21,15 +21,12 @@ struct RoomMemberProxyMockConfiguration {
var userID: String
var displayName: String?
var avatarURL: URL?
var membership: MembershipState
var isAccountOwner = false
var isIgnored = false
var powerLevel = 0
var role = RoomMemberRole.user
var canInviteUsers = false
var canKickUsers = false
var canBanUsers = false
var canSendStateEvent: (StateEventType) -> Bool = { _ in true }
}
extension RoomMemberProxyMock {
@@ -38,15 +35,12 @@ extension RoomMemberProxyMock {
userID = configuration.userID
displayName = configuration.displayName
avatarURL = configuration.avatarURL
membership = configuration.membership
isAccountOwner = configuration.isAccountOwner
isIgnored = configuration.isIgnored
powerLevel = configuration.powerLevel
role = configuration.role
canInviteUsers = configuration.canInviteUsers
canKickUsers = configuration.canKickUsers
canBanUsers = configuration.canBanUsers
canSendStateEventTypeClosure = configuration.canSendStateEvent
}
// Mocks
@@ -54,9 +48,7 @@ extension RoomMemberProxyMock {
RoomMemberProxyMock(with: .init(userID: "@me:matrix.org",
displayName: "Me",
avatarURL: URL.picturesDirectory,
membership: .join,
isAccountOwner: true,
canInviteUsers: true))
membership: .join))
}
static var mockMeAdmin: RoomMemberProxyMock {
@@ -64,12 +56,8 @@ extension RoomMemberProxyMock {
displayName: "Me admin",
avatarURL: URL.picturesDirectory,
membership: .join,
isAccountOwner: true,
powerLevel: 100,
role: .administrator,
canInviteUsers: true,
canKickUsers: true,
canBanUsers: true))
role: .administrator))
}
static var mockAlice: RoomMemberProxyMock {
@@ -117,15 +105,6 @@ extension RoomMemberProxyMock {
isIgnored: true))
}
static func mockOwner(allowedStateEvents: [StateEventType], canInviteUsers: Bool = true) -> RoomMemberProxyMock {
RoomMemberProxyMock(with: .init(userID: "@foo:some.org",
displayName: "User owner",
membership: .join,
isAccountOwner: true,
canInviteUsers: canInviteUsers,
canSendStateEvent: { allowedStateEvents.contains($0) }))
}
static var mockAdmin: RoomMemberProxyMock {
RoomMemberProxyMock(with: .init(userID: "@admin:matrix.org",
displayName: "Arthur",
+13 -2
View File
@@ -43,8 +43,9 @@ struct RoomProxyMockConfiguration {
var members: [RoomMemberProxyMock] = .allMembers
var memberForID: RoomMemberProxyMock = .mockMe
var ownUserID = "@alice:somewhere.org"
var ownUserID = RoomMemberProxyMock.mockMe.userID
var canUserInvite = true
var canUserTriggerRoomNotification = false
var canUserJoinCall = true
}
@@ -89,7 +90,17 @@ extension RoomProxyMock {
currentPowerLevelChangesReturnValue = .success(.init())
applyPowerLevelChangesReturnValue = .success(())
canUserUserIDSendStateEventClosure = { [weak self] userID, _ in
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
}
canUserInviteUserIDReturnValue = .success(configuration.canUserInvite)
canUserRedactOtherUserIDReturnValue = .success(false)
canUserKickUserIDClosure = { [weak self] userID in
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
}
canUserBanUserIDClosure = { [weak self] userID in
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
}
canUserTriggerRoomNotificationUserIDReturnValue = .success(configuration.canUserTriggerRoomNotification)
canUserJoinCallUserIDReturnValue = .success(configuration.canUserJoinCall)