Better integrate RoomPowerLevelsProxyMock's own Configuration struct.

This commit is contained in:
Stefan Ceriu
2025-06-20 16:43:39 +03:00
committed by Stefan Ceriu
parent f522e15dac
commit cbf405a67e
9 changed files with 52 additions and 39 deletions
@@ -36,12 +36,6 @@ struct JoinedRoomProxyMockConfiguration {
var ownUserID = RoomMemberProxyMock.mockMe.userID
var inviter: RoomMemberProxyProtocol?
var canUserSendMessage = true
var canUserInvite = true
var canUserTriggerRoomNotification = false
var canUserJoinCall = true
var canUserPin = true
var shouldUseAutoUpdatingTimeline = false
var joinRule: JoinRule?
@@ -50,6 +44,8 @@ struct JoinedRoomProxyMockConfiguration {
var isVisibleInPublicDirectory = false
var predecessor: PredecessorRoom?
var successor: SuccessorRoom?
var powerLevelsConfiguration = RoomPowerLevelsProxyMockConfiguration()
}
extension JoinedRoomProxyMock {
@@ -99,24 +95,17 @@ extension JoinedRoomProxyMock {
}
updatePowerLevelsForUsersReturnValue = .success(())
let powerLevelsProxyMock = RoomPowerLevelsProxyMock(configuration: .init())
let powerLevelsProxyMock = RoomPowerLevelsProxyMock(configuration: configuration.powerLevelsConfiguration)
powerLevelsProxyMock.canUserUserIDSendMessageReturnValue = .success(configuration.canUserSendMessage)
powerLevelsProxyMock.canUserUserIDSendStateEventClosure = { [weak self] userID, _ in
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
}
powerLevelsProxyMock.canUserInviteUserIDReturnValue = .success(configuration.canUserInvite)
powerLevelsProxyMock.canUserRedactOtherUserIDReturnValue = .success(false)
powerLevelsProxyMock.canUserRedactOwnUserIDReturnValue = .success(true)
powerLevelsProxyMock.canUserKickUserIDClosure = { [weak self] userID in
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
}
powerLevelsProxyMock.canUserBanUserIDClosure = { [weak self] userID in
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
}
powerLevelsProxyMock.canUserTriggerRoomNotificationUserIDReturnValue = .success(configuration.canUserTriggerRoomNotification)
powerLevelsProxyMock.canUserJoinCallUserIDReturnValue = .success(configuration.canUserJoinCall)
powerLevelsProxyMock.canUserPinOrUnpinUserIDReturnValue = .success(configuration.canUserPin)
powerLevelsReturnValue = .success(powerLevelsProxyMock)
@@ -7,24 +7,35 @@
import MatrixRustSDK
struct RoomPowerLevelsProxyMockConfiguration {
var canUserSendMessage = true
var canUserSendState = false
var canUserInvite = true
var canUserRedactOther = false
var canUserRedactOwn = true
var canUserKick = false
var canUserBan = false
var canUserTriggerRoomNotification = false
var canUserPin = true
var canUserJoinCall = true
}
extension RoomPowerLevelsProxyMock {
struct Configuration { }
convenience init(configuration: Configuration) {
convenience init(configuration: RoomPowerLevelsProxyMockConfiguration) {
self.init()
underlyingValues = RoomPowerLevelsValues.mock
canUserUserIDSendMessageReturnValue = .success(true)
canUserUserIDSendStateEventReturnValue = .success(true)
canUserInviteUserIDReturnValue = .success(true)
canUserRedactOtherUserIDReturnValue = .success(true)
canUserRedactOwnUserIDReturnValue = .success(true)
canUserKickUserIDReturnValue = .success(true)
canUserBanUserIDReturnValue = .success(true)
canUserTriggerRoomNotificationUserIDReturnValue = .success(true)
canUserPinOrUnpinUserIDReturnValue = .success(true)
canUserJoinCallUserIDReturnValue = .success(true)
canUserUserIDSendMessageReturnValue = .success(configuration.canUserSendMessage)
canUserUserIDSendStateEventReturnValue = .success(configuration.canUserSendState)
canUserInviteUserIDReturnValue = .success(configuration.canUserInvite)
canUserRedactOtherUserIDReturnValue = .success(configuration.canUserRedactOther)
canUserRedactOwnUserIDReturnValue = .success(configuration.canUserRedactOwn)
canUserKickUserIDReturnValue = .success(configuration.canUserKick)
canUserBanUserIDReturnValue = .success(configuration.canUserBan)
canUserTriggerRoomNotificationUserIDReturnValue = .success(configuration.canUserTriggerRoomNotification)
canUserPinOrUnpinUserIDReturnValue = .success(configuration.canUserPin)
canUserJoinCallUserIDReturnValue = .success(configuration.canUserJoinCall)
}
}
@@ -198,7 +198,7 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
roomProxy: JoinedRoomProxyMock(.init(name: "Some room",
members: members,
ownUserID: ownUserID,
canUserInvite: false)),
powerLevelsConfiguration: .init(canUserInvite: false))),
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)
@@ -240,8 +240,8 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview {
let roomProxyMock = JoinedRoomProxyMock(.init(id: "stable_id",
name: "Preview room",
hasOngoingCall: true,
canUserSendMessage: canSendMessage,
successor: hasSuccessor ? .init(roomId: UUID().uuidString, reason: nil) : nil))
successor: hasSuccessor ? .init(roomId: UUID().uuidString, reason: nil) : nil,
powerLevelsConfiguration: .init(canUserSendMessage: canSendMessage)))
let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
timelineController: MockTimelineController(),