mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Introduce a new RoomProxyType and treat rooms differently based on their membership state
This commit is contained in:
committed by
Stefan Ceriu
parent
e0ba9925e7
commit
e281a3f242
@@ -30,7 +30,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
|
||||
func testUserSuggestions() async throws {
|
||||
let alice: RoomMemberProxyMock = .mockAlice
|
||||
let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe]
|
||||
let roomProxyMock = RoomProxyMock(.init(name: "test", members: members))
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "test", members: members))
|
||||
let service = CompletionSuggestionService(roomProxy: roomProxyMock)
|
||||
|
||||
var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in
|
||||
@@ -67,7 +67,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
|
||||
func testUserSuggestionsIncludingAllUsers() async throws {
|
||||
let alice: RoomMemberProxyMock = .mockAlice
|
||||
let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe]
|
||||
let roomProxyMock = RoomProxyMock(.init(name: "test", members: members, canUserTriggerRoomNotification: true))
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "test", members: members, canUserTriggerRoomNotification: true))
|
||||
let service = CompletionSuggestionService(roomProxy: roomProxyMock)
|
||||
|
||||
var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in
|
||||
@@ -93,7 +93,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
|
||||
let alice: RoomMemberProxyMock = .mockAlice
|
||||
let bob: RoomMemberProxyMock = .mockBob
|
||||
let members: [RoomMemberProxyMock] = [alice, bob, .mockMe]
|
||||
let roomProxyMock = RoomProxyMock(.init(name: "test", members: members, canUserTriggerRoomNotification: true))
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "test", members: members, canUserTriggerRoomNotification: true))
|
||||
let service = CompletionSuggestionService(roomProxy: roomProxyMock)
|
||||
|
||||
var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in
|
||||
|
||||
@@ -87,7 +87,7 @@ class HomeScreenViewModelTests: XCTestCase {
|
||||
func testLeaveRoomAlert() async throws {
|
||||
let mockRoomId = "1"
|
||||
|
||||
clientProxy.roomForIdentifierClosure = { _ in RoomProxyMock(.init(id: mockRoomId, name: "Some room")) }
|
||||
clientProxy.roomForIdentifierClosure = { _ in .joined(JoinedRoomProxyMock(.init(id: mockRoomId, name: "Some room"))) }
|
||||
|
||||
let deferred = deferFulfillment(context.$viewState) { value in
|
||||
value.bindings.leaveRoomAlertItem != nil
|
||||
@@ -102,10 +102,10 @@ class HomeScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testLeaveRoomError() async throws {
|
||||
let mockRoomId = "1"
|
||||
let room = RoomProxyMock(.init(id: mockRoomId, name: "Some room"))
|
||||
let room = JoinedRoomProxyMock(.init(id: mockRoomId, name: "Some room"))
|
||||
room.leaveRoomClosure = { .failure(.sdkError(ClientProxyMockError.generic)) }
|
||||
|
||||
clientProxy.roomForIdentifierClosure = { _ in room }
|
||||
clientProxy.roomForIdentifierClosure = { _ in .joined(room) }
|
||||
|
||||
let deferred = deferFulfillment(context.$viewState) { value in
|
||||
value.bindings.alertInfo != nil
|
||||
@@ -133,10 +133,10 @@ class HomeScreenViewModelTests: XCTestCase {
|
||||
expectation.fulfill()
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
let room = RoomProxyMock(.init(id: mockRoomId, name: "Some room"))
|
||||
let room = JoinedRoomProxyMock(.init(id: mockRoomId, name: "Some room"))
|
||||
room.leaveRoomClosure = { .success(()) }
|
||||
|
||||
clientProxy.roomForIdentifierClosure = { _ in room }
|
||||
clientProxy.roomForIdentifierClosure = { _ in .joined(room) }
|
||||
|
||||
context.send(viewAction: .confirmLeaveRoom(roomIdentifier: mockRoomId))
|
||||
await fulfillment(of: [expectation])
|
||||
|
||||
@@ -64,7 +64,7 @@ class InviteUsersScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testInviteButton() async throws {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice, .mockBob]
|
||||
setupWithRoomType(roomType: .room(roomProxy: RoomProxyMock(.init(name: "test", members: mockedMembers))))
|
||||
setupWithRoomType(roomType: .room(roomProxy: JoinedRoomProxyMock(.init(name: "test", members: mockedMembers))))
|
||||
|
||||
let deferredState = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.isUserSelected(.mockAlice)
|
||||
|
||||
@@ -32,7 +32,7 @@ class MessageForwardingScreenViewModelTests: XCTestCase {
|
||||
cancellables.removeAll()
|
||||
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
clientProxy.roomForIdentifierClosure = { RoomProxyMock(.init(id: $0)) }
|
||||
clientProxy.roomForIdentifierClosure = { .joined(JoinedRoomProxyMock(.init(id: $0))) }
|
||||
|
||||
viewModel = MessageForwardingScreenViewModel(forwardingItem: forwardingItem,
|
||||
clientProxy: clientProxy,
|
||||
|
||||
@@ -23,7 +23,7 @@ import XCTest
|
||||
class PillContextTests: XCTestCase {
|
||||
func testUser() async throws {
|
||||
let id = "@test:matrix.org"
|
||||
let proxyMock = RoomProxyMock(.init(name: "Test"))
|
||||
let proxyMock = JoinedRoomProxyMock(.init(name: "Test"))
|
||||
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
|
||||
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
@@ -51,7 +51,7 @@ class PillContextTests: XCTestCase {
|
||||
|
||||
func testOwnUser() async throws {
|
||||
let id = "@test:matrix.org"
|
||||
let proxyMock = RoomProxyMock(.init(name: "Test", ownUserID: id))
|
||||
let proxyMock = JoinedRoomProxyMock(.init(name: "Test", ownUserID: id))
|
||||
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
|
||||
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
@@ -72,7 +72,7 @@ class PillContextTests: XCTestCase {
|
||||
let avatarURL = URL(string: "https://matrix.jpg")
|
||||
let id = "test_room"
|
||||
let displayName = "Test"
|
||||
let proxyMock = RoomProxyMock(.init(id: id, name: displayName, avatarURL: avatarURL))
|
||||
let proxyMock = JoinedRoomProxyMock(.init(id: id, name: displayName, avatarURL: avatarURL))
|
||||
let mockController = MockRoomTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||
|
||||
@@ -25,7 +25,7 @@ class ReportContentScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testReportContent() async throws {
|
||||
// Given the report content view for some content.
|
||||
let roomProxy = RoomProxyMock(.init(name: "test"))
|
||||
let roomProxy = JoinedRoomProxyMock(.init(name: "test"))
|
||||
roomProxy.reportContentReasonReturnValue = .success(())
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
let viewModel = ReportContentScreenViewModel(eventID: eventID,
|
||||
@@ -54,7 +54,7 @@ class ReportContentScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testReportIgnoringSender() async throws {
|
||||
// Given the report content view for some content.
|
||||
let roomProxy = RoomProxyMock(.init(name: "test"))
|
||||
let roomProxy = JoinedRoomProxyMock(.init(name: "test"))
|
||||
roomProxy.reportContentReasonReturnValue = .success(())
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
let viewModel = ReportContentScreenViewModel(eventID: eventID,
|
||||
|
||||
@@ -20,7 +20,7 @@ import XCTest
|
||||
|
||||
@MainActor
|
||||
class RoomChangePermissionsScreenViewModelTests: XCTestCase {
|
||||
var roomProxy: RoomProxyMock!
|
||||
var roomProxy: JoinedRoomProxyMock!
|
||||
var viewModel: RoomChangePermissionsScreenViewModelProtocol!
|
||||
|
||||
var context: RoomChangePermissionsScreenViewModelType.Context {
|
||||
@@ -28,7 +28,7 @@ class RoomChangePermissionsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
override func setUp() {
|
||||
roomProxy = RoomProxyMock(.init())
|
||||
roomProxy = JoinedRoomProxyMock(.init())
|
||||
viewModel = RoomChangePermissionsScreenViewModel(currentPermissions: .init(powerLevels: .mock),
|
||||
group: .roomDetails,
|
||||
roomProxy: roomProxy,
|
||||
|
||||
@@ -21,7 +21,7 @@ import XCTest
|
||||
@MainActor
|
||||
class RoomChangeRolesScreenViewModelTests: XCTestCase {
|
||||
var viewModel: RoomChangeRolesScreenViewModelProtocol!
|
||||
var roomProxy: RoomProxyMock!
|
||||
var roomProxy: JoinedRoomProxyMock!
|
||||
|
||||
var context: RoomChangeRolesScreenViewModelType.Context {
|
||||
viewModel.context
|
||||
@@ -202,7 +202,7 @@ class RoomChangeRolesScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
private func setupViewModel(mode: RoomMemberDetails.Role) {
|
||||
roomProxy = RoomProxyMock(.init(members: .allMembersAsAdmin))
|
||||
roomProxy = JoinedRoomProxyMock(.init(members: .allMembersAsAdmin))
|
||||
viewModel = RoomChangeRolesScreenViewModel(mode: mode,
|
||||
roomProxy: roomProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
|
||||
@@ -117,9 +117,9 @@ class RoomDetailsEditScreenViewModelTests: XCTestCase {
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
private func setupViewModel(roomProxyConfiguration: RoomProxyMockConfiguration) {
|
||||
private func setupViewModel(roomProxyConfiguration: JoinedRoomProxyMockConfiguration) {
|
||||
userIndicatorController = UserIndicatorControllerMock.default
|
||||
viewModel = .init(roomProxy: RoomProxyMock(roomProxyConfiguration),
|
||||
viewModel = .init(roomProxy: JoinedRoomProxyMock(roomProxyConfiguration),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: userIndicatorController)
|
||||
}
|
||||
|
||||
@@ -24,14 +24,14 @@ import XCTest
|
||||
@MainActor
|
||||
class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
var viewModel: RoomDetailsScreenViewModel!
|
||||
var roomProxyMock: RoomProxyMock!
|
||||
var roomProxyMock: JoinedRoomProxyMock!
|
||||
var notificationSettingsProxyMock: NotificationSettingsProxyMock!
|
||||
var context: RoomDetailsScreenViewModelType.Context { viewModel.context }
|
||||
var cancellables = Set<AnyCancellable>()
|
||||
|
||||
override func setUp() {
|
||||
cancellables.removeAll()
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test"))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test"))
|
||||
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
@@ -48,7 +48,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testLeaveRoomTappedWhenPublic() async throws {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -71,7 +71,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testLeaveRoomTappedWhenRoomNotPublic() async throws {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -95,7 +95,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testLeaveRoomTappedWithLessThanTwoMembers() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -149,7 +149,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
func testInitialDMDetailsState() async throws {
|
||||
let recipient = RoomMemberProxyMock.mockDan
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -173,7 +173,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
let recipient = RoomMemberProxyMock.mockDan
|
||||
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -208,7 +208,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
clientProxy.ignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: clientProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -242,7 +242,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
func testUnignoreSuccess() async throws {
|
||||
let recipient = RoomMemberProxyMock.mockIgnored
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -277,7 +277,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||
let clientProxy = ClientProxyMock(.init())
|
||||
clientProxy.unignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: clientProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -310,10 +310,10 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testCannotInvitePeople() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test",
|
||||
isPublic: true,
|
||||
members: mockedMembers,
|
||||
canUserInvite: false))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test",
|
||||
isPublic: true,
|
||||
members: mockedMembers,
|
||||
canUserInvite: false))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -331,7 +331,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testInvitePeople() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -365,7 +365,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testCanEditAvatar() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomAvatar)
|
||||
}
|
||||
@@ -389,7 +389,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testCanEditName() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomName)
|
||||
}
|
||||
@@ -413,7 +413,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testCanEditTopic() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomTopic)
|
||||
}
|
||||
@@ -437,7 +437,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testCannotEditRoom() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
@@ -458,7 +458,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testCannotEditDirectRoom() async {
|
||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMeAdmin, .mockBob, .mockAlice]
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isPublic: false, members: mockedMembers))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isPublic: false, members: mockedMembers))
|
||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||
clientProxy: ClientProxyMock(.init()),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
|
||||
@@ -171,7 +171,7 @@ class RoomFlowCoordinatorTests: XCTestCase {
|
||||
|
||||
// "Join" the room
|
||||
clientProxy.roomForIdentifierClosure = { _ in
|
||||
RoomProxyMock(.init())
|
||||
.joined(JoinedRoomProxyMock(.init()))
|
||||
}
|
||||
|
||||
try await process(route: .room(roomID: "InvitedRoomID", via: []))
|
||||
@@ -201,7 +201,7 @@ class RoomFlowCoordinatorTests: XCTestCase {
|
||||
|
||||
// "Join" the room
|
||||
clientProxy.roomForIdentifierClosure = { _ in
|
||||
RoomProxyMock(.init())
|
||||
.joined(JoinedRoomProxyMock(.init()))
|
||||
}
|
||||
|
||||
try await process(route: .room(roomID: "InvitedRoomID", via: []))
|
||||
|
||||
@@ -21,12 +21,12 @@ import XCTest
|
||||
@MainActor
|
||||
class RoomMemberDetailsViewModelTests: XCTestCase {
|
||||
var viewModel: RoomMemberDetailsScreenViewModelProtocol!
|
||||
var roomProxyMock: RoomProxyMock!
|
||||
var roomProxyMock: JoinedRoomProxyMock!
|
||||
var roomMemberProxyMock: RoomMemberProxyMock!
|
||||
var context: RoomMemberDetailsScreenViewModelType.Context { viewModel.context }
|
||||
|
||||
override func setUp() async throws {
|
||||
roomProxyMock = RoomProxyMock(.init(name: ""))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: ""))
|
||||
|
||||
roomProxyMock.getMemberUserIDClosure = { _ in
|
||||
.success(self.roomMemberProxyMock)
|
||||
|
||||
@@ -21,7 +21,7 @@ import XCTest
|
||||
@MainActor
|
||||
class RoomMembersListScreenViewModelTests: XCTestCase {
|
||||
var viewModel: RoomMembersListScreenViewModel!
|
||||
var roomProxy: RoomProxyMock!
|
||||
var roomProxy: JoinedRoomProxyMock!
|
||||
|
||||
var context: RoomMembersListScreenViewModel.Context {
|
||||
viewModel.context
|
||||
@@ -286,7 +286,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
private func setup(with members: [RoomMemberProxyMock]) {
|
||||
roomProxy = RoomProxyMock(.init(name: "test", members: members))
|
||||
roomProxy = JoinedRoomProxyMock(.init(name: "test", members: members))
|
||||
viewModel = .init(roomProxy: roomProxy,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
|
||||
@@ -22,18 +22,18 @@ import XCTest
|
||||
|
||||
@MainActor
|
||||
class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
var roomProxyMock: RoomProxyMock!
|
||||
var roomProxyMock: JoinedRoomProxyMock!
|
||||
var notificationSettingsProxyMock: NotificationSettingsProxyMock!
|
||||
var cancellables = Set<AnyCancellable>()
|
||||
|
||||
override func setUpWithError() throws {
|
||||
cancellables.removeAll()
|
||||
roomProxyMock = RoomProxyMock(.init(name: "Test"))
|
||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test"))
|
||||
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
}
|
||||
|
||||
func testInitialStateDefaultModeEncryptedRoom() async throws {
|
||||
let roomProxyMock = RoomProxyMock(.init(name: "Test", isEncrypted: true))
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "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(.init(name: "Test", isEncrypted: true))
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "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(.init(name: "Test", isEncrypted: false))
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isEncrypted: false))
|
||||
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
|
||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
|
||||
|
||||
@@ -21,7 +21,7 @@ import XCTest
|
||||
@MainActor
|
||||
class RoomRolesAndPermissionsScreenViewModelTests: XCTestCase {
|
||||
var viewModel: RoomRolesAndPermissionsScreenViewModelProtocol!
|
||||
var roomProxy: RoomProxyMock!
|
||||
var roomProxy: JoinedRoomProxyMock!
|
||||
|
||||
var context: RoomRolesAndPermissionsScreenViewModelType.Context {
|
||||
viewModel.context
|
||||
@@ -83,7 +83,7 @@ class RoomRolesAndPermissionsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
private func setupViewModel(members: [RoomMemberProxyMock]) {
|
||||
roomProxy = RoomProxyMock(.init(members: members))
|
||||
roomProxy = JoinedRoomProxyMock(.init(members: members))
|
||||
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
analytics: ServiceLocator.shared.analytics)
|
||||
|
||||
@@ -34,8 +34,8 @@ class RoomScreenViewModelTests: XCTestCase {
|
||||
func testPinnedEventsBanner() async throws {
|
||||
ServiceLocator.shared.settings.pinningEnabled = true
|
||||
let timelineSubject = PassthroughSubject<TimelineProxyProtocol, Never>()
|
||||
let updateSubject = PassthroughSubject<RoomProxyAction, Never>()
|
||||
let roomProxyMock = RoomProxyMock(.init())
|
||||
let updateSubject = PassthroughSubject<JoinedRoomProxyAction, Never>()
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init())
|
||||
// setup a way to inject the mock of the pinned events timeline
|
||||
roomProxyMock.pinnedEventsTimelineClosure = {
|
||||
await timelineSubject.values.first()
|
||||
@@ -105,8 +105,8 @@ class RoomScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testRoomInfoUpdate() async throws {
|
||||
let updateSubject = PassthroughSubject<RoomProxyAction, Never>()
|
||||
let roomProxyMock = RoomProxyMock(.init(id: "TestID", name: "StartingName", avatarURL: nil, hasOngoingCall: false))
|
||||
let updateSubject = PassthroughSubject<JoinedRoomProxyAction, Never>()
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(id: "TestID", name: "StartingName", avatarURL: nil, hasOngoingCall: false))
|
||||
// setup the room proxy actions publisher
|
||||
roomProxyMock.canUserJoinCallUserIDReturnValue = .success(false)
|
||||
roomProxyMock.underlyingActionsPublisher = updateSubject.eraseToAnyPublisher()
|
||||
|
||||
@@ -328,10 +328,10 @@ class TimelineViewModelTests: XCTestCase {
|
||||
// swiftlint:enable force_unwrapping
|
||||
// swiftlint:disable:next large_tuple
|
||||
private func readReceiptsConfiguration(with items: [RoomTimelineItemProtocol]) -> (TimelineViewModel,
|
||||
RoomProxyMock,
|
||||
JoinedRoomProxyMock,
|
||||
TimelineProxyMock,
|
||||
MockRoomTimelineController) {
|
||||
let roomProxy = RoomProxyMock(.init(name: ""))
|
||||
let roomProxy = JoinedRoomProxyMock(.init(name: ""))
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
|
||||
@@ -367,7 +367,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
// When showing them in a timeline.
|
||||
let timelineController = MockRoomTimelineController()
|
||||
timelineController.timelineItems = [message]
|
||||
let viewModel = TimelineViewModel(roomProxy: RoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
|
||||
let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
|
||||
timelineController: timelineController,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||
@@ -388,9 +388,9 @@ class TimelineViewModelTests: XCTestCase {
|
||||
// MARK: - Pins
|
||||
|
||||
func testPinnedEvents() async throws {
|
||||
let roomProxyMock = RoomProxyMock(.init(name: "",
|
||||
pinnedEventIDs: .init(["test1"])))
|
||||
let actionsSubject = PassthroughSubject<RoomProxyAction, Never>()
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "",
|
||||
pinnedEventIDs: .init(["test1"])))
|
||||
let actionsSubject = PassthroughSubject<JoinedRoomProxyAction, Never>()
|
||||
roomProxyMock.underlyingActionsPublisher = actionsSubject.eraseToAnyPublisher()
|
||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||
timelineController: MockRoomTimelineController(),
|
||||
@@ -417,8 +417,8 @@ class TimelineViewModelTests: XCTestCase {
|
||||
|
||||
func testCanUserPinEvents() async throws {
|
||||
ServiceLocator.shared.settings.pinningEnabled = true
|
||||
let roomProxyMock = RoomProxyMock(.init(name: "", canUserPin: false))
|
||||
let actionsSubject = PassthroughSubject<RoomProxyAction, Never>()
|
||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "", canUserPin: false))
|
||||
let actionsSubject = PassthroughSubject<JoinedRoomProxyAction, Never>()
|
||||
roomProxyMock.underlyingActionsPublisher = actionsSubject.eraseToAnyPublisher()
|
||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||
timelineController: MockRoomTimelineController(),
|
||||
@@ -445,10 +445,10 @@ class TimelineViewModelTests: XCTestCase {
|
||||
|
||||
// MARK: - Helpers
|
||||
|
||||
private func makeViewModel(roomProxy: RoomProxyProtocol? = nil,
|
||||
private func makeViewModel(roomProxy: JoinedRoomProxyProtocol? = nil,
|
||||
focussedEventID: String? = nil,
|
||||
timelineController: RoomTimelineControllerProtocol) -> TimelineViewModel {
|
||||
TimelineViewModel(roomProxy: roomProxy ?? RoomProxyMock(.init(name: "")),
|
||||
TimelineViewModel(roomProxy: roomProxy ?? JoinedRoomProxyMock(.init(name: "")),
|
||||
focussedEventID: focussedEventID,
|
||||
timelineController: timelineController,
|
||||
mediaProvider: MockMediaProvider(),
|
||||
|
||||
@@ -204,7 +204,7 @@ class VoiceMessageRecorderTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testSendVoiceMessage_NoRecordingFile() async throws {
|
||||
let roomProxy = RoomProxyMock()
|
||||
let roomProxy = JoinedRoomProxyMock()
|
||||
|
||||
// If there is no recording file, an error is expected
|
||||
audioRecorder.audioFileURL = nil
|
||||
@@ -219,7 +219,7 @@ class VoiceMessageRecorderTests: XCTestCase {
|
||||
// If the converter returns an error
|
||||
audioConverter.convertToOpusOggSourceURLDestinationURLThrowableError = AudioConverterError.conversionFailed(nil)
|
||||
|
||||
let roomProxy = RoomProxyMock()
|
||||
let roomProxy = JoinedRoomProxyMock()
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(inRoom: roomProxy, audioConverter: audioConverter) else {
|
||||
XCTFail("An error is expected")
|
||||
return
|
||||
@@ -237,7 +237,7 @@ class VoiceMessageRecorderTests: XCTestCase {
|
||||
}
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let roomProxy = RoomProxyMock()
|
||||
let roomProxy = JoinedRoomProxyMock()
|
||||
roomProxy.timeline = timelineProxy
|
||||
timelineProxy.sendVoiceMessageUrlAudioInfoWaveformProgressSubjectRequestHandleReturnValue = .failure(.sdkError(SDKError.generic))
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(inRoom: roomProxy, audioConverter: audioConverter) else {
|
||||
@@ -258,7 +258,7 @@ class VoiceMessageRecorderTests: XCTestCase {
|
||||
}
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let roomProxy = RoomProxyMock()
|
||||
let roomProxy = JoinedRoomProxyMock()
|
||||
roomProxy.timeline = timelineProxy
|
||||
timelineProxy.sendVoiceMessageUrlAudioInfoWaveformProgressSubjectRequestHandleReturnValue = .failure(.sdkError(SDKError.generic))
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(inRoom: roomProxy, audioConverter: audioConverter) else {
|
||||
@@ -281,7 +281,7 @@ class VoiceMessageRecorderTests: XCTestCase {
|
||||
|
||||
// If the media upload fails
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let roomProxy = RoomProxyMock()
|
||||
let roomProxy = JoinedRoomProxyMock()
|
||||
roomProxy.timeline = timelineProxy
|
||||
timelineProxy.sendVoiceMessageUrlAudioInfoWaveformProgressSubjectRequestHandleReturnValue = .failure(.sdkError(SDKError.generic))
|
||||
guard case .failure(.failedSendingVoiceMessage) = await voiceMessageRecorder.sendVoiceMessage(inRoom: roomProxy, audioConverter: audioConverter) else {
|
||||
@@ -297,7 +297,7 @@ class VoiceMessageRecorderTests: XCTestCase {
|
||||
}
|
||||
|
||||
let timelineProxy = TimelineProxyMock()
|
||||
let roomProxy = RoomProxyMock()
|
||||
let roomProxy = JoinedRoomProxyMock()
|
||||
roomProxy.timeline = timelineProxy
|
||||
audioRecorder.currentTime = 42
|
||||
audioRecorder.audioFileURL = imageFileURL
|
||||
|
||||
Reference in New Issue
Block a user