Replace the old MockUserSession with the generated UserSessionMock

This commit is contained in:
Stefan Ceriu
2024-05-27 14:44:15 +03:00
committed by Stefan Ceriu
parent a126715ba0
commit 3a904ebc9d
65 changed files with 220 additions and 259 deletions
+4 -4
View File
@@ -416,6 +416,7 @@
652ACCF104A8CEF30788963C /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1423AB065857FA546444DB15 /* NotificationManager.swift */; }; 652ACCF104A8CEF30788963C /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1423AB065857FA546444DB15 /* NotificationManager.swift */; };
6530865EB9A8C0F0AF0216DA /* ServerSelectionScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9501D11B4258DFA33BA3B40F /* ServerSelectionScreenModels.swift */; }; 6530865EB9A8C0F0AF0216DA /* ServerSelectionScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9501D11B4258DFA33BA3B40F /* ServerSelectionScreenModels.swift */; };
654E802C127B84554042903E /* AnalyticsSettingsScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECD5FCBA169B6A82F501CA1B /* AnalyticsSettingsScreenViewModelProtocol.swift */; }; 654E802C127B84554042903E /* AnalyticsSettingsScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECD5FCBA169B6A82F501CA1B /* AnalyticsSettingsScreenViewModelProtocol.swift */; };
6586E1F1D5F0651D0638FFAF /* UserSessionMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4469F6AE311BDC439B3A5EC /* UserSessionMock.swift */; };
659E5B766F76FDEC1BF393A4 /* RoomDetailsEditScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E413F4CBD7BF0588F394A9DD /* RoomDetailsEditScreenViewModel.swift */; }; 659E5B766F76FDEC1BF393A4 /* RoomDetailsEditScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E413F4CBD7BF0588F394A9DD /* RoomDetailsEditScreenViewModel.swift */; };
663E198678778F7426A9B27D /* Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9FAFE1C2149E6AC8156ED2B /* Collection.swift */; }; 663E198678778F7426A9B27D /* Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9FAFE1C2149E6AC8156ED2B /* Collection.swift */; };
67160204A8D362BB7D4AD259 /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 693E16574C6F7F9FA1015A8C /* Search.swift */; }; 67160204A8D362BB7D4AD259 /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 693E16574C6F7F9FA1015A8C /* Search.swift */; };
@@ -902,7 +903,6 @@
D6661A94DBD97658B2ADBD6A /* MapTilerStaticMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4D29F2683F5772AC72406F /* MapTilerStaticMap.swift */; }; D6661A94DBD97658B2ADBD6A /* MapTilerStaticMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4D29F2683F5772AC72406F /* MapTilerStaticMap.swift */; };
D6DE764B17FB4A9A12C33BF4 /* MessageComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1DF3FFFE5ED2B8133F43A7 /* MessageComposer.swift */; }; D6DE764B17FB4A9A12C33BF4 /* MessageComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1DF3FFFE5ED2B8133F43A7 /* MessageComposer.swift */; };
D7CDBAE82782BD0529DECB5F /* AttributedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BD6ED18E2EB61E28C340AD /* AttributedString.swift */; }; D7CDBAE82782BD0529DECB5F /* AttributedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52BD6ED18E2EB61E28C340AD /* AttributedString.swift */; };
D8359F67AF3A83516E9083C1 /* MockUserSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4756C5A8C8649AD6C10C615 /* MockUserSession.swift */; };
D876EC0FED3B6D46C806912A /* AvatarSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = E24B88AD3D1599E8CB1376E0 /* AvatarSize.swift */; }; D876EC0FED3B6D46C806912A /* AvatarSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = E24B88AD3D1599E8CB1376E0 /* AvatarSize.swift */; };
D9473FC9B077A6EDB7A12001 /* LocationRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 772334731A8BF8E6D90B194D /* LocationRoomTimelineView.swift */; }; D9473FC9B077A6EDB7A12001 /* LocationRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 772334731A8BF8E6D90B194D /* LocationRoomTimelineView.swift */; };
D98B5EE8C4F5A2CE84687AE8 /* UTType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 897DF5E9A70CE05A632FC8AF /* UTType.swift */; }; D98B5EE8C4F5A2CE84687AE8 /* UTType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 897DF5E9A70CE05A632FC8AF /* UTType.swift */; };
@@ -1765,7 +1765,6 @@
A40F1985065500F0E7F61A27 /* PollFormScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollFormScreenViewModelProtocol.swift; sourceTree = "<group>"; }; A40F1985065500F0E7F61A27 /* PollFormScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollFormScreenViewModelProtocol.swift; sourceTree = "<group>"; };
A433BE28B40D418237BE37B5 /* ReportContentScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportContentScreen.swift; sourceTree = "<group>"; }; A433BE28B40D418237BE37B5 /* ReportContentScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportContentScreen.swift; sourceTree = "<group>"; };
A436057DBEA1A23CA8CB1FD7 /* UIFont+AttributedStringBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIFont+AttributedStringBuilder.h"; sourceTree = "<group>"; }; A436057DBEA1A23CA8CB1FD7 /* UIFont+AttributedStringBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIFont+AttributedStringBuilder.h"; sourceTree = "<group>"; };
A4756C5A8C8649AD6C10C615 /* MockUserSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUserSession.swift; sourceTree = "<group>"; };
A58E93D91DE3288010390DEE /* EmojiDetectionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiDetectionTests.swift; sourceTree = "<group>"; }; A58E93D91DE3288010390DEE /* EmojiDetectionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiDetectionTests.swift; sourceTree = "<group>"; };
A65F140F9FE5E8D4DAEFF354 /* RoomProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomProxy.swift; sourceTree = "<group>"; }; A65F140F9FE5E8D4DAEFF354 /* RoomProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomProxy.swift; sourceTree = "<group>"; };
A6B891A6DA826E2461DBB40F /* PHGPostHogConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PHGPostHogConfiguration.swift; sourceTree = "<group>"; }; A6B891A6DA826E2461DBB40F /* PHGPostHogConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PHGPostHogConfiguration.swift; sourceTree = "<group>"; };
@@ -2101,6 +2100,7 @@
F36C0A6D59717193F49EA986 /* UserSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionTests.swift; sourceTree = "<group>"; }; F36C0A6D59717193F49EA986 /* UserSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionTests.swift; sourceTree = "<group>"; };
F37FA1A5D55633E1942B153B /* CallScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallScreenCoordinator.swift; sourceTree = "<group>"; }; F37FA1A5D55633E1942B153B /* CallScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallScreenCoordinator.swift; sourceTree = "<group>"; };
F3EAE3E9D5EF4A6D5D9C6CFD /* EmojiPickerScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerScreenViewModel.swift; sourceTree = "<group>"; }; F3EAE3E9D5EF4A6D5D9C6CFD /* EmojiPickerScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerScreenViewModel.swift; sourceTree = "<group>"; };
F4469F6AE311BDC439B3A5EC /* UserSessionMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionMock.swift; sourceTree = "<group>"; };
F4548A9BDE5CB3AB864BCA9F /* EffectsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EffectsView.swift; sourceTree = "<group>"; }; F4548A9BDE5CB3AB864BCA9F /* EffectsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EffectsView.swift; sourceTree = "<group>"; };
F506C6ADB1E1DA6638078E11 /* UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F506C6ADB1E1DA6638078E11 /* UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
F5311C989EC15B4C2D699025 /* StaticLocationScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StaticLocationScreenViewModel.swift; sourceTree = "<group>"; }; F5311C989EC15B4C2D699025 /* StaticLocationScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StaticLocationScreenViewModel.swift; sourceTree = "<group>"; };
@@ -2669,6 +2669,7 @@
248649EBA5BC33DB93698734 /* SessionVerificationControllerProxyMock.swift */, 248649EBA5BC33DB93698734 /* SessionVerificationControllerProxyMock.swift */,
7893780A1FD6E3F38B3E9049 /* UserIndicatorControllerMock.swift */, 7893780A1FD6E3F38B3E9049 /* UserIndicatorControllerMock.swift */,
AAD01F7FC2BBAC7351948595 /* UserProfile+Mock.swift */, AAD01F7FC2BBAC7351948595 /* UserProfile+Mock.swift */,
F4469F6AE311BDC439B3A5EC /* UserSessionMock.swift */,
B23135B06B044CB811139D2F /* Generated */, B23135B06B044CB811139D2F /* Generated */,
E5E545F92D01588360A9BAC5 /* SDK */, E5E545F92D01588360A9BAC5 /* SDK */,
); );
@@ -3847,7 +3848,6 @@
82D5AD3EAE3A5C1068A44A88 /* Session */ = { 82D5AD3EAE3A5C1068A44A88 /* Session */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A4756C5A8C8649AD6C10C615 /* MockUserSession.swift */,
6E5E9C044BEB7C70B1378E91 /* UserSession.swift */, 6E5E9C044BEB7C70B1378E91 /* UserSession.swift */,
5F4134FEFE4EB55759017408 /* UserSessionProtocol.swift */, 5F4134FEFE4EB55759017408 /* UserSessionProtocol.swift */,
); );
@@ -6147,7 +6147,6 @@
09C83DDDB07C28364F325209 /* MockRoomTimelineController.swift in Sources */, 09C83DDDB07C28364F325209 /* MockRoomTimelineController.swift in Sources */,
B721125D17A0BA86794F29FB /* MockServerSelectionScreenState.swift in Sources */, B721125D17A0BA86794F29FB /* MockServerSelectionScreenState.swift in Sources */,
AF2ABA2794E376B64104C964 /* MockSoftLogoutScreenState.swift in Sources */, AF2ABA2794E376B64104C964 /* MockSoftLogoutScreenState.swift in Sources */,
D8359F67AF3A83516E9083C1 /* MockUserSession.swift in Sources */,
F9842667B68DC6FA1F9ECCBB /* NSItemProvider.swift in Sources */, F9842667B68DC6FA1F9ECCBB /* NSItemProvider.swift in Sources */,
EA01A06EEDFEF4AE7652E5F3 /* NSRegularExpresion.swift in Sources */, EA01A06EEDFEF4AE7652E5F3 /* NSRegularExpresion.swift in Sources */,
FA2BBAE9FC5E2E9F960C0980 /* NavigationCoordinators.swift in Sources */, FA2BBAE9FC5E2E9F960C0980 /* NavigationCoordinators.swift in Sources */,
@@ -6542,6 +6541,7 @@
8AB8ED1051216546CB35FA0E /* UserSession.swift in Sources */, 8AB8ED1051216546CB35FA0E /* UserSession.swift in Sources */,
4A618590DEB72C4F186BFED4 /* UserSessionFlowCoordinator.swift in Sources */, 4A618590DEB72C4F186BFED4 /* UserSessionFlowCoordinator.swift in Sources */,
3113065AABBC14CEAE6843FA /* UserSessionFlowCoordinatorStateMachine.swift in Sources */, 3113065AABBC14CEAE6843FA /* UserSessionFlowCoordinatorStateMachine.swift in Sources */,
6586E1F1D5F0651D0638FFAF /* UserSessionMock.swift in Sources */,
978BB24F2A5D31EE59EEC249 /* UserSessionProtocol.swift in Sources */, 978BB24F2A5D31EE59EEC249 /* UserSessionProtocol.swift in Sources */,
7E91BAC17963ED41208F489B /* UserSessionStore.swift in Sources */, 7E91BAC17963ED41208F489B /* UserSessionStore.swift in Sources */,
AC69B6DF15FC451AB2945036 /* UserSessionStoreProtocol.swift in Sources */, AC69B6DF15FC451AB2945036 /* UserSessionStoreProtocol.swift in Sources */,
+2 -2
View File
@@ -96,9 +96,9 @@ extension ClientProxyMock {
switch room { switch room {
case .empty: case .empty:
return await RoomProxyMock(with: .init(name: "Empty room")) return await RoomProxyMock(.init(name: "Empty room"))
case .filled(let details), .invalidated(let details): case .filled(let details), .invalidated(let details):
return await RoomProxyMock(with: .init(id: roomID, name: details.name)) return await RoomProxyMock(.init(id: roomID, name: details.name))
} }
} }
} }
@@ -13079,6 +13079,34 @@ class UserNotificationCenterMock: UserNotificationCenterProtocol {
} }
} }
} }
class UserSessionMock: UserSessionProtocol {
var clientProxy: ClientProxyProtocol {
get { return underlyingClientProxy }
set(value) { underlyingClientProxy = value }
}
var underlyingClientProxy: ClientProxyProtocol!
var mediaProvider: MediaProviderProtocol {
get { return underlyingMediaProvider }
set(value) { underlyingMediaProvider = value }
}
var underlyingMediaProvider: MediaProviderProtocol!
var voiceMessageMediaManager: VoiceMessageMediaManagerProtocol {
get { return underlyingVoiceMessageMediaManager }
set(value) { underlyingVoiceMessageMediaManager = value }
}
var underlyingVoiceMessageMediaManager: VoiceMessageMediaManagerProtocol!
var sessionSecurityStatePublisher: CurrentValuePublisher<SessionSecurityState, Never> {
get { return underlyingSessionSecurityStatePublisher }
set(value) { underlyingSessionSecurityStatePublisher = value }
}
var underlyingSessionSecurityStatePublisher: CurrentValuePublisher<SessionSecurityState, Never>!
var callbacks: PassthroughSubject<UserSessionCallback, Never> {
get { return underlyingCallbacks }
set(value) { underlyingCallbacks = value }
}
var underlyingCallbacks: PassthroughSubject<UserSessionCallback, Never>!
}
class VoiceMessageCacheMock: VoiceMessageCacheProtocol { class VoiceMessageCacheMock: VoiceMessageCacheProtocol {
var urlForRecording: URL { var urlForRecording: URL {
get { return underlyingUrlForRecording } get { return underlyingUrlForRecording }
+1 -1
View File
@@ -58,7 +58,7 @@ enum RoomProxyMockError: Error {
extension RoomProxyMock { extension RoomProxyMock {
@MainActor @MainActor
convenience init(with configuration: RoomProxyMockConfiguration) { convenience init(_ configuration: RoomProxyMockConfiguration) {
self.init() self.init()
id = configuration.id id = configuration.id
@@ -1,5 +1,5 @@
// //
// Copyright 2022 New Vector Ltd // Copyright 2024 New Vector Ltd
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@@ -15,15 +15,25 @@
// //
import Combine import Combine
import Foundation
struct MockUserSession: UserSessionProtocol { struct UserSessionMockConfiguration {
let callbacks = PassthroughSubject<UserSessionCallback, Never>()
var sessionVerificationController: SessionVerificationControllerProxyProtocol? var sessionVerificationController: SessionVerificationControllerProxyProtocol?
var userID: String { clientProxy.userID }
var deviceID: String? { clientProxy.deviceID }
var homeserver: String { clientProxy.homeserver }
let clientProxy: ClientProxyProtocol let clientProxy: ClientProxyProtocol
let mediaProvider: MediaProviderProtocol }
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
var sessionSecurityStatePublisher = CurrentValueSubject<SessionSecurityState, Never>(.init(verificationState: .verified, recoveryState: .enabled)).asCurrentValuePublisher() extension UserSessionMock {
convenience init(_ configuration: UserSessionMockConfiguration) {
self.init()
clientProxy = configuration.clientProxy
userID = clientProxy.userID
deviceID = clientProxy.deviceID
homeserver = clientProxy.homeserver
mediaProvider = MockMediaProvider()
voiceMessageMediaManager = VoiceMessageMediaManagerMock()
sessionSecurityStatePublisher = CurrentValueSubject<SessionSecurityState, Never>(.init(verificationState: .verified, recoveryState: .enabled)).asCurrentValuePublisher()
}
} }
@@ -76,9 +76,7 @@ extension View {
} }
struct ShimmerOverlay_Previews: PreviewProvider, TestablePreview { struct ShimmerOverlay_Previews: PreviewProvider, TestablePreview {
static let viewModel = HomeScreenViewModel(userSession: MockUserSession(clientProxy: ClientProxyMock(.init(userID: "")), static let viewModel = HomeScreenViewModel(userSession: UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "")))),
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock()),
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
appSettings: ServiceLocator.shared.settings, appSettings: ServiceLocator.shared.settings,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(), selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
@@ -74,9 +74,7 @@ struct WaitlistScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = WaitlistScreenViewModel(homeserver: .mockMatrixDotOrg) static let viewModel = WaitlistScreenViewModel(homeserver: .mockMatrixDotOrg)
static let successViewModel = { static let successViewModel = {
let viewModel = WaitlistScreenViewModel(homeserver: .mockMatrixDotOrg) let viewModel = WaitlistScreenViewModel(homeserver: .mockMatrixDotOrg)
viewModel.update(userSession: MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@alice:matrix.org")), viewModel.update(userSession: UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@alice:matrix.org")))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock()))
return viewModel return viewModel
}() }()
@@ -175,9 +175,7 @@ struct CreateRoomScreen: View {
struct CreateRoom_Previews: PreviewProvider, TestablePreview { struct CreateRoom_Previews: PreviewProvider, TestablePreview {
static let viewModel = { static let viewModel = {
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@userid:example.com")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@userid:example.com"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let parameters = CreateRoomFlowParameters() let parameters = CreateRoomFlowParameters()
let selectedUsers: [UserProfileProxy] = [.mockAlice, .mockBob, .mockCharlie] let selectedUsers: [UserProfileProxy] = [.mockAlice, .mockBob, .mockCharlie]
@@ -189,9 +187,7 @@ struct CreateRoom_Previews: PreviewProvider, TestablePreview {
}() }()
static let emtpyViewModel = { static let emtpyViewModel = {
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@userid:example.com")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@userid:example.com"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let parameters = CreateRoomFlowParameters() let parameters = CreateRoomFlowParameters()
return CreateRoomViewModel(userSession: userSession, return CreateRoomViewModel(userSession: userSession,
createRoomParameters: .init(parameters), createRoomParameters: .init(parameters),
@@ -245,9 +245,7 @@ struct HomeScreen_Previews: PreviewProvider, TestablePreview {
let clientProxy = ClientProxyMock(.init(userID: userID, let clientProxy = ClientProxyMock(.init(userID: userID,
roomSummaryProvider: RoomSummaryProviderMock(.init(state: roomSummaryProviderState)))) roomSummaryProvider: RoomSummaryProviderMock(.init(state: roomSummaryProviderState))))
let userSession = MockUserSession(clientProxy: clientProxy, let userSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return HomeScreenViewModel(userSession: userSession, return HomeScreenViewModel(userSession: userSession,
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
@@ -149,10 +149,8 @@ struct HomeScreenEmptyStateView_Previews: PreviewProvider, TestablePreview {
} }
static let viewModel = { static let viewModel = {
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@user:example.com", let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@user:example.com",
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([]))))), roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([])))))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return HomeScreenViewModel(userSession: userSession, return HomeScreenViewModel(userSession: userSession,
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
@@ -191,9 +191,7 @@ struct HomeScreenInviteCell_Previews: PreviewProvider, TestablePreview {
static func viewModel() -> HomeScreenViewModel { static func viewModel() -> HomeScreenViewModel {
let clientProxy = ClientProxyMock(.init()) let clientProxy = ClientProxyMock(.init())
let userSession = MockUserSession(clientProxy: clientProxy, let userSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return HomeScreenViewModel(userSession: userSession, return HomeScreenViewModel(userSession: userSession,
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
@@ -68,9 +68,7 @@ struct HomeScreenRecoveryKeyConfirmationBanner_Previews: PreviewProvider, Testab
let clientProxy = ClientProxyMock(.init(userID: "@alice:example.com", let clientProxy = ClientProxyMock(.init(userID: "@alice:example.com",
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loading)))) roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loading))))
let userSession = MockUserSession(clientProxy: clientProxy, let userSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return HomeScreenViewModel(userSession: userSession, return HomeScreenViewModel(userSession: userSession,
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
@@ -176,9 +176,7 @@ private extension View {
struct HomeScreenRoomCell_Previews: PreviewProvider, TestablePreview { struct HomeScreenRoomCell_Previews: PreviewProvider, TestablePreview {
static let summaryProviderGeneric = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))) static let summaryProviderGeneric = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
static let viewModelGeneric = { static let viewModelGeneric = {
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "John Doe", roomSummaryProvider: summaryProviderGeneric)), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "John Doe", roomSummaryProvider: summaryProviderGeneric))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return HomeScreenViewModel(userSession: userSession, return HomeScreenViewModel(userSession: userSession,
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
@@ -189,9 +187,7 @@ struct HomeScreenRoomCell_Previews: PreviewProvider, TestablePreview {
static let summaryProviderForNotificationsState = RoomSummaryProviderMock(.init(state: .loaded(.mockRoomsWithNotificationsState))) static let summaryProviderForNotificationsState = RoomSummaryProviderMock(.init(state: .loaded(.mockRoomsWithNotificationsState)))
static let viewModelForNotificationsState = { static let viewModelForNotificationsState = {
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "John Doe", roomSummaryProvider: summaryProviderForNotificationsState)), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "John Doe", roomSummaryProvider: summaryProviderForNotificationsState))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return HomeScreenViewModel(userSession: userSession, return HomeScreenViewModel(userSession: userSession,
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
@@ -107,7 +107,7 @@ struct MessageForwardingScreen_Previews: PreviewProvider, TestablePreview {
let viewModel = MessageForwardingScreenViewModel(forwardingItem: .init(id: .init(timelineID: ""), let viewModel = MessageForwardingScreenViewModel(forwardingItem: .init(id: .init(timelineID: ""),
roomID: "", roomID: "",
content: .init(noPointer: .init())), content: .init(noPointer: .init())),
clientProxy: ClientProxyMock(), clientProxy: ClientProxyMock(.init()),
roomSummaryProvider: summaryProvider, roomSummaryProvider: summaryProvider,
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
mediaProvider: MockMediaProvider()) mediaProvider: MockMediaProvider())
@@ -115,10 +115,8 @@ struct IdentityConfirmationScreen_Previews: PreviewProvider, TestablePreview {
} }
private static var viewModel: IdentityConfirmationScreenViewModel { private static var viewModel: IdentityConfirmationScreenViewModel {
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@user:example.com", let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@user:example.com",
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([]))))), roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([])))))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return IdentityConfirmationScreenViewModel(userSession: userSession, return IdentityConfirmationScreenViewModel(userSession: userSession,
appSettings: ServiceLocator.shared.settings, appSettings: ServiceLocator.shared.settings,
@@ -77,7 +77,7 @@ struct ReportContentScreen: View {
struct ReportContentScreen_Previews: PreviewProvider, TestablePreview { struct ReportContentScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = ReportContentScreenViewModel(eventID: "", static let viewModel = ReportContentScreenViewModel(eventID: "",
senderID: "", senderID: "",
roomProxy: RoomProxyMock(with: .init()), roomProxy: RoomProxyMock(.init()),
clientProxy: ClientProxyMock(.init())) clientProxy: ClientProxyMock(.init()))
static var previews: some View { static var previews: some View {
@@ -86,7 +86,7 @@ struct RoomChangePermissionsScreen_Previews: PreviewProvider, TestablePreview {
static func makeViewModel(group: RoomRolesAndPermissionsScreenPermissionsGroup) -> RoomChangePermissionsScreenViewModel { static func makeViewModel(group: RoomRolesAndPermissionsScreenPermissionsGroup) -> RoomChangePermissionsScreenViewModel {
RoomChangePermissionsScreenViewModel(currentPermissions: .init(powerLevels: .mock), RoomChangePermissionsScreenViewModel(currentPermissions: .init(powerLevels: .mock),
group: group, group: group,
roomProxy: RoomProxyMock(with: .init()), roomProxy: RoomProxyMock(.init()),
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
analytics: ServiceLocator.shared.analytics) analytics: ServiceLocator.shared.analytics)
} }
@@ -132,7 +132,7 @@ struct RoomChangeRolesScreen_Previews: PreviewProvider, TestablePreview {
static func makeViewModel(mode: RoomMemberDetails.Role) -> RoomChangeRolesScreenViewModel { static func makeViewModel(mode: RoomMemberDetails.Role) -> RoomChangeRolesScreenViewModel {
RoomChangeRolesScreenViewModel(mode: mode, RoomChangeRolesScreenViewModel(mode: mode,
roomProxy: RoomProxyMock(with: .init(members: .allMembersAsAdmin)), roomProxy: RoomProxyMock(.init(members: .allMembersAsAdmin)),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
analytics: ServiceLocator.shared.analytics) analytics: ServiceLocator.shared.analytics)
@@ -157,9 +157,9 @@ struct RoomDetailsEditScreen: View {
struct RoomDetailsEditScreen_Previews: PreviewProvider, TestablePreview { struct RoomDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
static let editableViewModel = { static let editableViewModel = {
let roomProxy = RoomProxyMock(with: .init(id: "test_id", let roomProxy = RoomProxyMock(.init(id: "test_id",
name: "Room", name: "Room",
members: [.mockMeAdmin])) members: [.mockMeAdmin]))
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy, return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -167,9 +167,9 @@ struct RoomDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
}() }()
static let readOnlyViewModel = { static let readOnlyViewModel = {
let roomProxy = RoomProxyMock(with: .init(id: "test_id", let roomProxy = RoomProxyMock(.init(id: "test_id",
name: "Room", name: "Room",
members: [.mockAlice])) members: [.mockAlice]))
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy, return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -301,20 +301,20 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
.mockBob, .mockBob,
.mockCharlie .mockCharlie
] ]
let roomProxy = RoomProxyMock(with: .init(id: "room_a_id", let roomProxy = RoomProxyMock(.init(id: "room_a_id",
name: "Room A", name: "Room A",
topic: """ topic: """
Discussions about Element X iOS | https://github.com/vector-im/element-x-ios Discussions about Element X iOS | https://github.com/vector-im/element-x-ios
Feature Status: https://github.com/vector-im/element-x-ios/issues/1225 Feature Status: https://github.com/vector-im/element-x-ios/issues/1225
App Store: https://apple.co/3r6LJHZ App Store: https://apple.co/3r6LJHZ
TestFlight: https://testflight.apple.com/join/uZbeZCOi TestFlight: https://testflight.apple.com/join/uZbeZCOi
""", """,
isDirect: false, isDirect: false,
isEncrypted: true, isEncrypted: true,
canonicalAlias: "#alias:domain.com", canonicalAlias: "#alias:domain.com",
members: members)) members: members))
var notificationSettingsProxyMockConfiguration = NotificationSettingsProxyMockConfiguration() var notificationSettingsProxyMockConfiguration = NotificationSettingsProxyMockConfiguration()
notificationSettingsProxyMockConfiguration.roomMode.isDefault = false notificationSettingsProxyMockConfiguration.roomMode.isDefault = false
@@ -336,13 +336,13 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
.mockDan .mockDan
] ]
let roomProxy = RoomProxyMock(with: .init(id: "dm_room_id", let roomProxy = RoomProxyMock(.init(id: "dm_room_id",
name: "DM Room", name: "DM Room",
topic: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", topic: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
isDirect: true, isDirect: true,
isEncrypted: true, isEncrypted: true,
canonicalAlias: "#alias:domain.com", canonicalAlias: "#alias:domain.com",
members: members)) members: members))
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init()) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
let appSettings = AppSettings() let appSettings = AppSettings()
@@ -362,11 +362,11 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
.mockBob, .mockBob,
.mockCharlie .mockCharlie
] ]
let roomProxy = RoomProxyMock(with: .init(id: "simple_room_id", let roomProxy = RoomProxyMock(.init(id: "simple_room_id",
name: "Room A", name: "Room A",
isDirect: false, isDirect: false,
isEncrypted: false, isEncrypted: false,
members: members)) members: members))
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init()) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
let appSettings = AppSettings() let appSettings = AppSettings()
@@ -143,7 +143,7 @@ struct RoomMemberDetailsScreen_Previews: PreviewProvider, TestablePreview {
} }
static func makeViewModel(member: RoomMemberProxyMock) -> RoomMemberDetailsScreenViewModel { static func makeViewModel(member: RoomMemberProxyMock) -> RoomMemberDetailsScreenViewModel {
let roomProxyMock = RoomProxyMock(with: .init(name: "")) let roomProxyMock = RoomProxyMock(.init(name: ""))
roomProxyMock.getMemberUserIDReturnValue = .success(member) roomProxyMock.getMemberUserIDReturnValue = .success(member)
let clientProxyMock = ClientProxyMock(.init()) let clientProxyMock = ClientProxyMock(.init())
@@ -108,7 +108,7 @@ struct RoomMembersListManageMemberSheetLive_Previews: PreviewProvider {
private extension RoomMembersListScreenViewModel { private extension RoomMembersListScreenViewModel {
static var mock: RoomMembersListScreenViewModel { static var mock: RoomMembersListScreenViewModel {
RoomMembersListScreenViewModel(initialMode: .members, RoomMembersListScreenViewModel(initialMode: .members,
roomProxy: RoomProxyMock(with: .init(members: .allMembersAsAdmin)), roomProxy: RoomProxyMock(.init(members: .allMembersAsAdmin)),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
userIndicatorController: ServiceLocator.shared.userIndicatorController, userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics) analytics: ServiceLocator.shared.analytics)
@@ -179,10 +179,10 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
} }
return RoomMembersListScreenViewModel(initialMode: initialMode, return RoomMembersListScreenViewModel(initialMode: initialMode,
roomProxy: RoomProxyMock(with: .init(name: "Some room", roomProxy: RoomProxyMock(.init(name: "Some room",
members: members, members: members,
ownUserID: ownUserID, ownUserID: ownUserID,
canUserInvite: false)), canUserInvite: false)),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
userIndicatorController: ServiceLocator.shared.userIndicatorController, userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics) analytics: ServiceLocator.shared.analytics)
@@ -106,8 +106,8 @@ struct RoomMembersListMemberCell_Previews: PreviewProvider, TestablePreview {
.init(with: .init(userID: "@badavatar:matrix.org", avatarURL: .picturesDirectory, membership: .ban)) .init(with: .init(userID: "@badavatar:matrix.org", avatarURL: .picturesDirectory, membership: .ban))
] ]
static let viewModel = RoomMembersListScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Some room", static let viewModel = RoomMembersListScreenViewModel(roomProxy: RoomProxyMock(.init(name: "Some room",
members: members)), members: members)),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
userIndicatorController: ServiceLocator.shared.userIndicatorController, userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics) analytics: ServiceLocator.shared.analytics)
@@ -42,7 +42,7 @@ struct RoomNotificationSettingsCustomSectionView_Previews: PreviewProvider, Test
static let viewModel = { static let viewModel = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly)) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly))
let roomProxy = RoomProxyMock(with: .init(name: "Room", isEncrypted: true)) let roomProxy = RoomProxyMock(.init(name: "Room", isEncrypted: true))
return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy, return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy,
roomProxy: roomProxy, roomProxy: roomProxy,
@@ -52,7 +52,7 @@ struct RoomNotificationSettingsCustomSectionView_Previews: PreviewProvider, Test
static let viewModelUnencrypted = { static let viewModelUnencrypted = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly)) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly))
let roomProxy = RoomProxyMock(with: .init(name: "Room", isEncrypted: false)) let roomProxy = RoomProxyMock(.init(name: "Room", isEncrypted: false))
return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy, return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy,
roomProxy: roomProxy, roomProxy: roomProxy,
@@ -83,7 +83,7 @@ struct RoomNotificationSettingsScreen_Previews: PreviewProvider, TestablePreview
static let viewModel = { static let viewModel = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .mentionsAndKeywordsOnly, roomMode: .mentionsAndKeywordsOnly)) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .mentionsAndKeywordsOnly, roomMode: .mentionsAndKeywordsOnly))
let roomProxy = RoomProxyMock(with: .init(name: "Room", isEncrypted: true)) let roomProxy = RoomProxyMock(.init(name: "Room", isEncrypted: true))
return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy, return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy,
roomProxy: roomProxy, roomProxy: roomProxy,
@@ -93,7 +93,7 @@ struct RoomNotificationSettingsScreen_Previews: PreviewProvider, TestablePreview
static let viewModelCustom = { static let viewModelCustom = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly)) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .allMessages, roomMode: .mentionsAndKeywordsOnly))
let roomProxy = RoomProxyMock(with: .init(name: "Room", isEncrypted: true)) let roomProxy = RoomProxyMock(.init(name: "Room", isEncrypted: true))
return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy, return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy,
roomProxy: roomProxy, roomProxy: roomProxy,
@@ -52,7 +52,7 @@ struct RoomNotificationSettingsUserDefinedScreen_Previews: PreviewProvider, Test
static let viewModel = { static let viewModel = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .mentionsAndKeywordsOnly, roomMode: .mentionsAndKeywordsOnly)) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .mentionsAndKeywordsOnly, roomMode: .mentionsAndKeywordsOnly))
let roomProxy = RoomProxyMock(with: .init(name: "Room", isEncrypted: true)) let roomProxy = RoomProxyMock(.init(name: "Room", isEncrypted: true))
return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy, return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy,
roomProxy: roomProxy, roomProxy: roomProxy,
@@ -62,7 +62,7 @@ struct RoomNotificationSettingsUserDefinedScreen_Previews: PreviewProvider, Test
static let viewModelUnencrypted = { static let viewModelUnencrypted = {
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .mentionsAndKeywordsOnly, roomMode: .mentionsAndKeywordsOnly)) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init(defaultRoomMode: .mentionsAndKeywordsOnly, roomMode: .mentionsAndKeywordsOnly))
let roomProxy = RoomProxyMock(with: .init(name: "Room", isEncrypted: false)) let roomProxy = RoomProxyMock(.init(name: "Room", isEncrypted: false))
return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy, return RoomNotificationSettingsScreenViewModel(notificationSettingsProxy: notificationSettingsProxy,
roomProxy: roomProxy, roomProxy: roomProxy,
@@ -127,7 +127,7 @@ struct RoomRolesAndPermissionsScreen: View {
struct RoomRolesAndPermissionsScreen_Previews: PreviewProvider, TestablePreview { struct RoomRolesAndPermissionsScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = RoomRolesAndPermissionsScreenViewModel(initialPermissions: RoomPermissions(powerLevels: .mock), static let viewModel = RoomRolesAndPermissionsScreenViewModel(initialPermissions: RoomPermissions(powerLevels: .mock),
roomProxy: RoomProxyMock(with: .init(members: .allMembersAsAdmin)), roomProxy: RoomProxyMock(.init(members: .allMembersAsAdmin)),
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
analytics: ServiceLocator.shared.analytics) analytics: ServiceLocator.shared.analytics)
static var previews: some View { static var previews: some View {
@@ -800,7 +800,7 @@ private extension RoomProxyProtocol {
// MARK: - Mocks // MARK: - Mocks
extension RoomScreenViewModel { extension RoomScreenViewModel {
static let mock = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Preview room")), static let mock = RoomScreenViewModel(roomProxy: RoomProxyMock(.init(name: "Preview room")),
focussedEventID: nil, focussedEventID: nil,
timelineController: MockRoomTimelineController(), timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -51,7 +51,7 @@ struct ReadReceiptsSummaryView_Previews: PreviewProvider, TestablePreview {
.mockCharlie, .mockCharlie,
.mockDan .mockDan
] ]
let roomProxyMock = RoomProxyMock(with: .init(name: "Room", members: members)) let roomProxyMock = RoomProxyMock(.init(name: "Room", members: members))
let mock = RoomScreenViewModel(roomProxy: roomProxyMock, let mock = RoomScreenViewModel(roomProxy: roomProxyMock,
timelineController: MockRoomTimelineController(), timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -184,7 +184,7 @@ struct RoomScreen: View {
// MARK: - Previews // MARK: - Previews
struct RoomScreen_Previews: PreviewProvider, TestablePreview { struct RoomScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Preview room", hasOngoingCall: true)), static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(.init(name: "Preview room", hasOngoingCall: true)),
timelineController: MockRoomTimelineController(), timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -90,7 +90,7 @@ struct TimelineReadReceiptsView_Previews: PreviewProvider, TestablePreview {
.mockMe .mockMe
] ]
static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Test", members: members)), static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(.init(name: "Test", members: members)),
timelineController: MockRoomTimelineController(), timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -94,7 +94,7 @@ struct HighlightedTimelineItemModifier_Previews: PreviewProvider, TestablePrevie
/// A preview that allows quick testing of the highlight appearance across various timeline scenarios. /// A preview that allows quick testing of the highlight appearance across various timeline scenarios.
struct HighlightedTimelineItemTimeline_Previews: PreviewProvider { struct HighlightedTimelineItemTimeline_Previews: PreviewProvider {
static let focussedEventID = "RoomTimelineItemFixtures.default.5" static let focussedEventID = "RoomTimelineItemFixtures.default.5"
static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Preview room")), static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(.init(name: "Preview room")),
focussedEventID: focussedEventID, focussedEventID: focussedEventID,
timelineController: MockRoomTimelineController(), timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -84,7 +84,7 @@ struct TimelineView: UIViewControllerRepresentable {
// MARK: - Previews // MARK: - Previews
struct TimelineView_Previews: PreviewProvider, TestablePreview { struct TimelineView_Previews: PreviewProvider, TestablePreview {
static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Preview room")), static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(.init(name: "Preview room")),
timelineController: MockRoomTimelineController(), timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -73,10 +73,8 @@ struct NotificationSettingsEditScreen_Previews: PreviewProvider, TestablePreview
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages
notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = [RoomSummary].mockRooms.compactMap(\.id) notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = [RoomSummary].mockRooms.compactMap(\.id)
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@alice:example.com", let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@alice:example.com",
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))), roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
var viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat, var viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
userSession: userSession, userSession: userSession,
notificationSettingsProxy: notificationSettingsProxy) notificationSettingsProxy: notificationSettingsProxy)
@@ -88,10 +86,8 @@ struct NotificationSettingsEditScreen_Previews: PreviewProvider, TestablePreview
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init()) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .mentionsAndKeywordsOnly notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .mentionsAndKeywordsOnly
notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = [] notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = []
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@alice:example.com", let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@alice:example.com",
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))), roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
var viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat, var viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat,
userSession: userSession, userSession: userSession,
notificationSettingsProxy: notificationSettingsProxy) notificationSettingsProxy: notificationSettingsProxy)
@@ -103,9 +99,7 @@ struct NotificationSettingsEditScreen_Previews: PreviewProvider, TestablePreview
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init()) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .mentionsAndKeywordsOnly notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .mentionsAndKeywordsOnly
notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = [] notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = []
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "John Doe")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "John Doe"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
var viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat, var viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat,
userSession: userSession, userSession: userSession,
@@ -120,10 +114,8 @@ struct NotificationSettingsEditScreen_Previews: PreviewProvider, TestablePreview
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages
notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = [RoomSummary].mockRooms.compactMap(\.id) notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = [RoomSummary].mockRooms.compactMap(\.id)
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@alice:example.com", let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@alice:example.com",
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))), roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
var viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat, var viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
userSession: userSession, userSession: userSession,
notificationSettingsProxy: notificationSettingsProxy) notificationSettingsProxy: notificationSettingsProxy)
@@ -61,9 +61,7 @@ struct NotificationSettingsEditScreenRoomCell_Previews: PreviewProvider, Testabl
static var previews: some View { static var previews: some View {
let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))) let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "John Doe", roomSummaryProvider: summaryProvider)), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "John Doe", roomSummaryProvider: summaryProvider))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init()) let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = [] notificationSettingsProxy.getRoomsWithUserDefinedRulesReturnValue = []
@@ -222,9 +222,7 @@ struct NotificationSettingsScreen_Previews: PreviewProvider, TestablePreview {
notificationSettingsProxy.isRoomMentionEnabledReturnValue = true notificationSettingsProxy.isRoomMentionEnabledReturnValue = true
notificationSettingsProxy.isCallEnabledReturnValue = false notificationSettingsProxy.isCallEnabledReturnValue = false
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "John Doe")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "John Doe"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
var viewModel = NotificationSettingsScreenViewModel(appSettings: appSettings, var viewModel = NotificationSettingsScreenViewModel(appSettings: appSettings,
userNotificationCenter: notificationCenter, userNotificationCenter: notificationCenter,
@@ -252,9 +250,7 @@ struct NotificationSettingsScreen_Previews: PreviewProvider, TestablePreview {
notificationSettingsProxy.isRoomMentionEnabledReturnValue = true notificationSettingsProxy.isRoomMentionEnabledReturnValue = true
notificationSettingsProxy.isCallEnabledReturnValue = false notificationSettingsProxy.isCallEnabledReturnValue = false
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "John Doe")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "John Doe"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
var viewModel = NotificationSettingsScreenViewModel(appSettings: appSettings, var viewModel = NotificationSettingsScreenViewModel(appSettings: appSettings,
userNotificationCenter: notificationCenter, userNotificationCenter: notificationCenter,
@@ -235,11 +235,9 @@ struct SettingsScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = { static let viewModel = {
let verificationController = SessionVerificationControllerProxyMock() let verificationController = SessionVerificationControllerProxyMock()
verificationController.isVerifiedReturnValue = .success(false) verificationController.isVerifiedReturnValue = .success(false)
let userSession = MockUserSession(sessionVerificationController: verificationController, let userSession = UserSessionMock(.init(sessionVerificationController: verificationController,
clientProxy: ClientProxyMock(.init(userID: "@userid:example.com", clientProxy: ClientProxyMock(.init(userID: "@userid:example.com",
deviceID: "AAAAAAAAAAA")), deviceID: "AAAAAAAAAAA"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return SettingsScreenViewModel(userSession: userSession, return SettingsScreenViewModel(userSession: userSession,
appSettings: ServiceLocator.shared.settings) appSettings: ServiceLocator.shared.settings)
}() }()
@@ -129,9 +129,7 @@ struct StartChatScreen: View {
struct StartChatScreen_Previews: PreviewProvider, TestablePreview { struct StartChatScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = { static let viewModel = {
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@userid:example.com")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@userid:example.com"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let userDiscoveryService = UserDiscoveryServiceMock() let userDiscoveryService = UserDiscoveryServiceMock()
userDiscoveryService.searchProfilesWithReturnValue = .success([.mockAlice]) userDiscoveryService.searchProfilesWithReturnValue = .success([.mockAlice])
let viewModel = StartChatScreenViewModel(userSession: userSession, let viewModel = StartChatScreenViewModel(userSession: userSession,
@@ -62,9 +62,7 @@ class MockAuthenticationServiceProxy: AuthenticationServiceProxyProtocol {
return .failure(.invalidCredentials) return .failure(.invalidCredentials)
} }
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: username)), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: username))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
return .success(userSession) return .success(userSession)
} }
} }
@@ -26,6 +26,7 @@ struct SessionSecurityState: Equatable {
let recoveryState: SecureBackupRecoveryState let recoveryState: SecureBackupRecoveryState
} }
// sourcery: AutoMockable
protocol UserSessionProtocol { protocol UserSessionProtocol {
var homeserver: String { get } var homeserver: String { get }
var userID: String { get } var userID: String { get }
@@ -233,9 +233,7 @@ class MockScreen: Identifiable {
case .bugReport: case .bugReport:
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))) let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))
let userSession = MockUserSession(clientProxy: clientProxy, let userSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let coordinator = BugReportScreenCoordinator(parameters: .init(bugReportService: BugReportServiceMock(), let coordinator = BugReportScreenCoordinator(parameters: .init(bugReportService: BugReportServiceMock(),
userSession: userSession, userSession: userSession,
userIndicatorController: nil, userIndicatorController: nil,
@@ -245,7 +243,7 @@ class MockScreen: Identifiable {
return navigationStackCoordinator return navigationStackCoordinator
case .roomPlainNoAvatar: case .roomPlainNoAvatar:
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Some room name", avatarURL: nil)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Some room name", avatarURL: nil)),
timelineController: MockRoomTimelineController(), timelineController: MockRoomTimelineController(),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -261,7 +259,7 @@ class MockScreen: Identifiable {
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "New room", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "New room", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -277,7 +275,7 @@ class MockScreen: Identifiable {
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.default timelineController.timelineItems = RoomTimelineItemFixtures.default
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "New room", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "New room", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -293,7 +291,7 @@ class MockScreen: Identifiable {
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunkWithReadReceipts timelineController.timelineItems = RoomTimelineItemFixtures.smallChunkWithReadReceipts
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "New room", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "New room", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -312,7 +310,7 @@ class MockScreen: Identifiable {
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.singleMessageChunk] timelineController.backPaginationResponses = [RoomTimelineItemFixtures.singleMessageChunk]
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage] timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Small timeline", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Small timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -331,7 +329,7 @@ class MockScreen: Identifiable {
let timelineController = MockRoomTimelineController(listenForSignals: true) let timelineController = MockRoomTimelineController(listenForSignals: true)
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk] timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Small timeline, paginating", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Small timeline, paginating", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -350,7 +348,7 @@ class MockScreen: Identifiable {
let timelineController = MockRoomTimelineController(listenForSignals: true) let timelineController = MockRoomTimelineController(listenForSignals: true)
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk] timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Large timeline", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Large timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -370,7 +368,7 @@ class MockScreen: Identifiable {
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk] timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage] timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Large timeline", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Large timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -389,7 +387,7 @@ class MockScreen: Identifiable {
let timelineController = MockRoomTimelineController(listenForSignals: true) let timelineController = MockRoomTimelineController(listenForSignals: true)
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage] timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Large timeline", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Large timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -407,7 +405,7 @@ class MockScreen: Identifiable {
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.permalinkChunk timelineController.timelineItems = RoomTimelineItemFixtures.permalinkChunk
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Timeline highlight", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Timeline highlight", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -439,7 +437,7 @@ class MockScreen: Identifiable {
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.disclosedPolls timelineController.timelineItems = RoomTimelineItemFixtures.disclosedPolls
timelineController.incomingItems = [] timelineController.incomingItems = []
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Polls timeline", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Polls timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -458,7 +456,7 @@ class MockScreen: Identifiable {
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.undisclosedPolls timelineController.timelineItems = RoomTimelineItemFixtures.undisclosedPolls
timelineController.incomingItems = [] timelineController.incomingItems = []
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Polls timeline", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Polls timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -477,7 +475,7 @@ class MockScreen: Identifiable {
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = RoomTimelineItemFixtures.outgoingPolls timelineController.timelineItems = RoomTimelineItemFixtures.outgoingPolls
timelineController.incomingItems = [] timelineController.incomingItems = []
let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(with: .init(name: "Polls timeline", avatarURL: URL.picturesDirectory)), let parameters = RoomScreenCoordinatorParameters(roomProxy: RoomProxyMock(.init(name: "Polls timeline", avatarURL: URL.picturesDirectory)),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -504,7 +502,7 @@ class MockScreen: Identifiable {
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))) let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))
ServiceLocator.shared.settings.migratedAccounts[clientProxy.userID] = true ServiceLocator.shared.settings.migratedAccounts[clientProxy.userID] = true
let flowCoordinator = UserSessionFlowCoordinator(userSession: MockUserSession(clientProxy: clientProxy, mediaProvider: MockMediaProvider(), voiceMessageMediaManager: VoiceMessageMediaManagerMock()), let flowCoordinator = UserSessionFlowCoordinator(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
navigationRootCoordinator: navigationRootCoordinator, navigationRootCoordinator: navigationRootCoordinator,
appLockService: AppLockService(keychainController: KeychainControllerMock(), appLockService: AppLockService(keychainController: KeychainControllerMock(),
appSettings: ServiceLocator.shared.settings), appSettings: ServiceLocator.shared.settings),
@@ -526,7 +524,7 @@ class MockScreen: Identifiable {
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let members: [RoomMemberProxyMock] = [.mockInvitedAlice, .mockBob, .mockCharlie] let members: [RoomMemberProxyMock] = [.mockInvitedAlice, .mockBob, .mockCharlie]
let coordinator = RoomMembersListScreenCoordinator(parameters: .init(mediaProvider: MockMediaProvider(), let coordinator = RoomMembersListScreenCoordinator(parameters: .init(mediaProvider: MockMediaProvider(),
roomProxy: RoomProxyMock(with: .init(name: "test", members: members)), roomProxy: RoomProxyMock(.init(name: "test", members: members)),
userIndicatorController: ServiceLocator.shared.userIndicatorController, userIndicatorController: ServiceLocator.shared.userIndicatorController,
analytics: ServiceLocator.shared.analytics)) analytics: ServiceLocator.shared.analytics))
navigationStackCoordinator.setRootCoordinator(coordinator) navigationStackCoordinator.setRootCoordinator(coordinator)
@@ -534,7 +532,7 @@ class MockScreen: Identifiable {
case .roomRolesAndPermissionsFlow: case .roomRolesAndPermissionsFlow:
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
navigationStackCoordinator.setRootCoordinator(BlankFormCoordinator()) navigationStackCoordinator.setRootCoordinator(BlankFormCoordinator())
let coordinator = RoomRolesAndPermissionsFlowCoordinator(parameters: .init(roomProxy: RoomProxyMock(with: .init(members: .allMembersAsAdmin)), let coordinator = RoomRolesAndPermissionsFlowCoordinator(parameters: .init(roomProxy: RoomProxyMock(.init(members: .allMembersAsAdmin)),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
navigationStackCoordinator: navigationStackCoordinator, navigationStackCoordinator: navigationStackCoordinator,
userIndicatorController: ServiceLocator.shared.userIndicatorController, userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -546,9 +544,7 @@ class MockScreen: Identifiable {
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let userDiscoveryMock = UserDiscoveryServiceMock() let userDiscoveryMock = UserDiscoveryServiceMock()
userDiscoveryMock.searchProfilesWithReturnValue = .success([]) userDiscoveryMock.searchProfilesWithReturnValue = .success([])
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@mock:client.com")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@mock:client.com"))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let parameters: StartChatScreenCoordinatorParameters = .init(orientationManager: OrientationManagerMock(), let parameters: StartChatScreenCoordinatorParameters = .init(orientationManager: OrientationManagerMock(),
userSession: userSession, userSession: userSession,
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
@@ -562,7 +558,7 @@ class MockScreen: Identifiable {
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com")) let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com"))
let userDiscoveryMock = UserDiscoveryServiceMock() let userDiscoveryMock = UserDiscoveryServiceMock()
userDiscoveryMock.searchProfilesWithReturnValue = .success([.mockBob, .mockBobby]) userDiscoveryMock.searchProfilesWithReturnValue = .success([.mockBob, .mockBobby])
let userSession = MockUserSession(clientProxy: clientProxy, mediaProvider: MockMediaProvider(), voiceMessageMediaManager: VoiceMessageMediaManagerMock()) let userSession = UserSessionMock(.init(clientProxy: clientProxy))
let coordinator = StartChatScreenCoordinator(parameters: .init(orientationManager: OrientationManagerMock(), let coordinator = StartChatScreenCoordinator(parameters: .init(orientationManager: OrientationManagerMock(),
userSession: userSession, userSession: userSession,
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
@@ -573,7 +569,7 @@ class MockScreen: Identifiable {
case .createRoom: case .createRoom:
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com")) let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com"))
let mockUserSession = MockUserSession(clientProxy: clientProxy, mediaProvider: MockMediaProvider(), voiceMessageMediaManager: VoiceMessageMediaManagerMock()) let mockUserSession = UserSessionMock(.init(clientProxy: clientProxy))
let createRoomParameters = CreateRoomFlowParameters() let createRoomParameters = CreateRoomFlowParameters()
let selectedUsers: [UserProfileProxy] = [.mockAlice, .mockBob, .mockCharlie] let selectedUsers: [UserProfileProxy] = [.mockAlice, .mockBob, .mockCharlie]
let parameters = CreateRoomCoordinatorParameters(userSession: mockUserSession, let parameters = CreateRoomCoordinatorParameters(userSession: mockUserSession,
@@ -586,9 +582,7 @@ class MockScreen: Identifiable {
case .createRoomNoUsers: case .createRoomNoUsers:
let navigationStackCoordinator = NavigationStackCoordinator() let navigationStackCoordinator = NavigationStackCoordinator()
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com")) let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com"))
let mockUserSession = MockUserSession(clientProxy: clientProxy, let mockUserSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let createRoomParameters = CreateRoomFlowParameters() let createRoomParameters = CreateRoomFlowParameters()
let parameters = CreateRoomCoordinatorParameters(userSession: mockUserSession, let parameters = CreateRoomCoordinatorParameters(userSession: mockUserSession,
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
@@ -30,7 +30,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
func testUserSuggestions() async throws { func testUserSuggestions() async throws {
let alice: RoomMemberProxyMock = .mockAlice let alice: RoomMemberProxyMock = .mockAlice
let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe] let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe]
let roomProxyMock = RoomProxyMock(with: .init(name: "test", members: members)) let roomProxyMock = RoomProxyMock(.init(name: "test", members: members))
let service = CompletionSuggestionService(roomProxy: roomProxyMock) let service = CompletionSuggestionService(roomProxy: roomProxyMock)
var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in
@@ -67,7 +67,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
func testUserSuggestionsIncludingAllUsers() async throws { func testUserSuggestionsIncludingAllUsers() async throws {
let alice: RoomMemberProxyMock = .mockAlice let alice: RoomMemberProxyMock = .mockAlice
let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe] let members: [RoomMemberProxyMock] = [alice, .mockBob, .mockCharlie, .mockMe]
let roomProxyMock = RoomProxyMock(with: .init(name: "test", members: members, canUserTriggerRoomNotification: true)) let roomProxyMock = RoomProxyMock(.init(name: "test", members: members, canUserTriggerRoomNotification: true))
let service = CompletionSuggestionService(roomProxy: roomProxyMock) let service = CompletionSuggestionService(roomProxy: roomProxyMock)
var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in
@@ -93,7 +93,7 @@ final class CompletionSuggestionServiceTests: XCTestCase {
let alice: RoomMemberProxyMock = .mockAlice let alice: RoomMemberProxyMock = .mockAlice
let bob: RoomMemberProxyMock = .mockBob let bob: RoomMemberProxyMock = .mockBob
let members: [RoomMemberProxyMock] = [alice, bob, .mockMe] let members: [RoomMemberProxyMock] = [alice, bob, .mockMe]
let roomProxyMock = RoomProxyMock(with: .init(name: "test", members: members, canUserTriggerRoomNotification: true)) let roomProxyMock = RoomProxyMock(.init(name: "test", members: members, canUserTriggerRoomNotification: true))
let service = CompletionSuggestionService(roomProxy: roomProxyMock) let service = CompletionSuggestionService(roomProxy: roomProxyMock)
var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in var deferred = deferFulfillment(service.suggestionsPublisher) { suggestions in
@@ -23,7 +23,7 @@ import XCTest
class CreateRoomScreenViewModelTests: XCTestCase { class CreateRoomScreenViewModelTests: XCTestCase {
var viewModel: CreateRoomViewModelProtocol! var viewModel: CreateRoomViewModelProtocol!
var clientProxy: ClientProxyMock! var clientProxy: ClientProxyMock!
var userSession: MockUserSession! var userSession: UserSessionMock!
private let usersSubject = CurrentValueSubject<[UserProfileProxy], Never>([]) private let usersSubject = CurrentValueSubject<[UserProfileProxy], Never>([])
private var cancellables = Set<AnyCancellable>() private var cancellables = Set<AnyCancellable>()
@@ -35,9 +35,7 @@ class CreateRoomScreenViewModelTests: XCTestCase {
override func setUpWithError() throws { override func setUpWithError() throws {
cancellables.removeAll() cancellables.removeAll()
clientProxy = ClientProxyMock(.init(userID: "@a:b.com")) clientProxy = ClientProxyMock(.init(userID: "@a:b.com"))
userSession = MockUserSession(clientProxy: clientProxy, userSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
let parameters = CreateRoomFlowParameters() let parameters = CreateRoomFlowParameters()
usersSubject.send([.mockAlice, .mockBob, .mockCharlie]) usersSubject.send([.mockAlice, .mockBob, .mockCharlie])
let viewModel = CreateRoomViewModel(userSession: userSession, let viewModel = CreateRoomViewModel(userSession: userSession,
@@ -31,9 +31,7 @@ class HomeScreenViewModelTests: XCTestCase {
cancellables.removeAll() cancellables.removeAll()
roomSummaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))) roomSummaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: roomSummaryProvider)) clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: roomSummaryProvider))
viewModel = HomeScreenViewModel(userSession: MockUserSession(clientProxy: clientProxy, viewModel = HomeScreenViewModel(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock()),
analyticsService: ServiceLocator.shared.analytics, analyticsService: ServiceLocator.shared.analytics,
appSettings: ServiceLocator.shared.settings, appSettings: ServiceLocator.shared.settings,
selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(), selectedRoomPublisher: CurrentValueSubject<String?, Never>(nil).asCurrentValuePublisher(),
@@ -89,7 +87,7 @@ class HomeScreenViewModelTests: XCTestCase {
func testLeaveRoomAlert() async throws { func testLeaveRoomAlert() async throws {
let mockRoomId = "1" let mockRoomId = "1"
clientProxy.roomForIdentifierClosure = { _ in RoomProxyMock(with: .init(id: mockRoomId, name: "Some room")) } clientProxy.roomForIdentifierClosure = { _ in RoomProxyMock(.init(id: mockRoomId, name: "Some room")) }
let deferred = deferFulfillment(context.$viewState) { value in let deferred = deferFulfillment(context.$viewState) { value in
value.bindings.leaveRoomAlertItem != nil value.bindings.leaveRoomAlertItem != nil
@@ -104,7 +102,7 @@ class HomeScreenViewModelTests: XCTestCase {
func testLeaveRoomError() async throws { func testLeaveRoomError() async throws {
let mockRoomId = "1" let mockRoomId = "1"
let room: RoomProxyMock = .init(with: .init(id: mockRoomId, name: "Some room")) let room = RoomProxyMock(.init(id: mockRoomId, name: "Some room"))
room.leaveRoomClosure = { .failure(.sdkError(ClientProxyMockError.generic)) } room.leaveRoomClosure = { .failure(.sdkError(ClientProxyMockError.generic)) }
clientProxy.roomForIdentifierClosure = { _ in room } clientProxy.roomForIdentifierClosure = { _ in room }
@@ -135,7 +133,7 @@ class HomeScreenViewModelTests: XCTestCase {
expectation.fulfill() expectation.fulfill()
} }
.store(in: &cancellables) .store(in: &cancellables)
let room: RoomProxyMock = .init(with: .init(id: mockRoomId, name: "Some room")) let room = RoomProxyMock(.init(id: mockRoomId, name: "Some room"))
room.leaveRoomClosure = { .success(()) } room.leaveRoomClosure = { .success(()) }
clientProxy.roomForIdentifierClosure = { _ in room } clientProxy.roomForIdentifierClosure = { _ in room }
@@ -64,7 +64,7 @@ class InviteUsersScreenViewModelTests: XCTestCase {
func testInviteButton() async throws { func testInviteButton() async throws {
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice, .mockBob] let mockedMembers: [RoomMemberProxyMock] = [.mockAlice, .mockBob]
setupWithRoomType(roomType: .room(roomProxy: RoomProxyMock(with: .init(name: "test", members: mockedMembers)))) setupWithRoomType(roomType: .room(roomProxy: RoomProxyMock(.init(name: "test", members: mockedMembers))))
let deferredState = deferFulfillment(viewModel.context.$viewState) { state in let deferredState = deferFulfillment(viewModel.context.$viewState) { state in
state.isUserSelected(.mockAlice) state.isUserSelected(.mockAlice)
@@ -32,7 +32,7 @@ class MessageForwardingScreenViewModelTests: XCTestCase {
cancellables.removeAll() cancellables.removeAll()
let clientProxy = ClientProxyMock(.init()) let clientProxy = ClientProxyMock(.init())
clientProxy.roomForIdentifierClosure = { RoomProxyMock(with: .init(id: $0)) } clientProxy.roomForIdentifierClosure = { RoomProxyMock(.init(id: $0)) }
viewModel = MessageForwardingScreenViewModel(forwardingItem: forwardingItem, viewModel = MessageForwardingScreenViewModel(forwardingItem: forwardingItem,
clientProxy: clientProxy, clientProxy: clientProxy,
@@ -24,9 +24,7 @@ import XCTest
final class NotificationManagerTests: XCTestCase { final class NotificationManagerTests: XCTestCase {
var notificationManager: NotificationManager! var notificationManager: NotificationManager!
private let clientProxy = ClientProxyMock(.init(userID: "@test:user.net")) private let clientProxy = ClientProxyMock(.init(userID: "@test:user.net"))
private lazy var mockUserSession = MockUserSession(clientProxy: clientProxy, private lazy var mockUserSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
private var notificationCenter: UserNotificationCenterMock! private var notificationCenter: UserNotificationCenterMock!
private var authorizationStatusWasGranted = false private var authorizationStatusWasGranted = false
private var shouldDisplayInAppNotificationReturnValue = false private var shouldDisplayInAppNotificationReturnValue = false
@@ -169,9 +167,7 @@ final class NotificationManagerTests: XCTestCase {
notificationCenter.authorizationStatusReturnValue = .authorized notificationCenter.authorizationStatusReturnValue = .authorized
notificationManager.delegate = self notificationManager.delegate = self
notificationManager.setUserSession(MockUserSession(clientProxy: ClientProxyMock(), notificationManager.setUserSession(UserSessionMock(.init(clientProxy: ClientProxyMock(.init()))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock()))
try await Task.sleep(for: .seconds(1)) try await Task.sleep(for: .seconds(1))
XCTAssertFalse(authorizationStatusWasGranted) XCTAssertFalse(authorizationStatusWasGranted)
@@ -188,9 +184,7 @@ final class NotificationManagerTests: XCTestCase {
expectation.fulfill() expectation.fulfill()
} }
notificationManager.setUserSession(MockUserSession(clientProxy: ClientProxyMock(), notificationManager.setUserSession(UserSessionMock(.init(clientProxy: ClientProxyMock(.init()))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock()))
await fulfillment(of: [expectation]) await fulfillment(of: [expectation])
XCTAssertTrue(authorizationStatusWasGranted) XCTAssertTrue(authorizationStatusWasGranted)
@@ -31,9 +31,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
@MainActor override func setUpWithError() throws { @MainActor override func setUpWithError() throws {
let clientProxy = ClientProxyMock(.init(userID: "@a:b.com")) let clientProxy = ClientProxyMock(.init(userID: "@a:b.com"))
userSession = MockUserSession(clientProxy: clientProxy, userSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
notificationSettingsProxy = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()) notificationSettingsProxy = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages
} }
+3 -3
View File
@@ -23,7 +23,7 @@ import XCTest
class PillContextTests: XCTestCase { class PillContextTests: XCTestCase {
func testUser() async throws { func testUser() async throws {
let id = "@test:matrix.org" let id = "@test:matrix.org"
let proxyMock = RoomProxyMock(with: .init(name: "Test")) let proxyMock = RoomProxyMock(.init(name: "Test"))
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([]) let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
proxyMock.membersPublisher = subject.asCurrentValuePublisher() proxyMock.membersPublisher = subject.asCurrentValuePublisher()
let mock = RoomScreenViewModel(roomProxy: proxyMock, let mock = RoomScreenViewModel(roomProxy: proxyMock,
@@ -52,7 +52,7 @@ class PillContextTests: XCTestCase {
func testOwnUser() async throws { func testOwnUser() async throws {
let id = "@test:matrix.org" let id = "@test:matrix.org"
let proxyMock = RoomProxyMock(with: .init(name: "Test", ownUserID: id)) let proxyMock = RoomProxyMock(.init(name: "Test", ownUserID: id))
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([]) let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
proxyMock.membersPublisher = subject.asCurrentValuePublisher() proxyMock.membersPublisher = subject.asCurrentValuePublisher()
let mock = RoomScreenViewModel(roomProxy: proxyMock, let mock = RoomScreenViewModel(roomProxy: proxyMock,
@@ -74,7 +74,7 @@ class PillContextTests: XCTestCase {
let avatarURL = URL(string: "https://matrix.jpg") let avatarURL = URL(string: "https://matrix.jpg")
let id = "test_room" let id = "test_room"
let displayName = "Test" let displayName = "Test"
let proxyMock = RoomProxyMock(with: .init(id: id, name: displayName, avatarURL: avatarURL)) let proxyMock = RoomProxyMock(.init(id: id, name: displayName, avatarURL: avatarURL))
let mockController = MockRoomTimelineController() let mockController = MockRoomTimelineController()
mockController.roomProxy = proxyMock mockController.roomProxy = proxyMock
let mock = RoomScreenViewModel(roomProxy: proxyMock, let mock = RoomScreenViewModel(roomProxy: proxyMock,
@@ -25,7 +25,7 @@ class ReportContentScreenViewModelTests: XCTestCase {
func testReportContent() async throws { func testReportContent() async throws {
// Given the report content view for some content. // Given the report content view for some content.
let roomProxy = RoomProxyMock(with: .init(name: "test")) let roomProxy = RoomProxyMock(.init(name: "test"))
roomProxy.reportContentReasonReturnValue = .success(()) roomProxy.reportContentReasonReturnValue = .success(())
let clientProxy = ClientProxyMock(.init()) let clientProxy = ClientProxyMock(.init())
let viewModel = ReportContentScreenViewModel(eventID: eventID, let viewModel = ReportContentScreenViewModel(eventID: eventID,
@@ -54,7 +54,7 @@ class ReportContentScreenViewModelTests: XCTestCase {
func testReportIgnoringSender() async throws { func testReportIgnoringSender() async throws {
// Given the report content view for some content. // Given the report content view for some content.
let roomProxy = RoomProxyMock(with: .init(name: "test")) let roomProxy = RoomProxyMock(.init(name: "test"))
roomProxy.reportContentReasonReturnValue = .success(()) roomProxy.reportContentReasonReturnValue = .success(())
let clientProxy = ClientProxyMock(.init()) let clientProxy = ClientProxyMock(.init())
let viewModel = ReportContentScreenViewModel(eventID: eventID, let viewModel = ReportContentScreenViewModel(eventID: eventID,
@@ -28,7 +28,7 @@ class RoomChangePermissionsScreenViewModelTests: XCTestCase {
} }
override func setUp() { override func setUp() {
roomProxy = RoomProxyMock(with: .init()) roomProxy = RoomProxyMock(.init())
viewModel = RoomChangePermissionsScreenViewModel(currentPermissions: .init(powerLevels: .mock), viewModel = RoomChangePermissionsScreenViewModel(currentPermissions: .init(powerLevels: .mock),
group: .roomDetails, group: .roomDetails,
roomProxy: roomProxy, roomProxy: roomProxy,
@@ -202,7 +202,7 @@ class RoomChangeRolesScreenViewModelTests: XCTestCase {
} }
private func setupViewModel(mode: RoomMemberDetails.Role) { private func setupViewModel(mode: RoomMemberDetails.Role) {
roomProxy = RoomProxyMock(with: .init(members: .allMembersAsAdmin)) roomProxy = RoomProxyMock(.init(members: .allMembersAsAdmin))
viewModel = RoomChangeRolesScreenViewModel(mode: mode, viewModel = RoomChangeRolesScreenViewModel(mode: mode,
roomProxy: roomProxy, roomProxy: roomProxy,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -119,7 +119,7 @@ class RoomDetailsEditScreenViewModelTests: XCTestCase {
private func setupViewModel(roomProxyConfiguration: RoomProxyMockConfiguration) { private func setupViewModel(roomProxyConfiguration: RoomProxyMockConfiguration) {
userIndicatorController = UserIndicatorControllerMock.default userIndicatorController = UserIndicatorControllerMock.default
viewModel = .init(roomProxy: RoomProxyMock(with: roomProxyConfiguration), viewModel = .init(roomProxy: RoomProxyMock(roomProxyConfiguration),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
userIndicatorController: userIndicatorController) userIndicatorController: userIndicatorController)
} }
@@ -31,7 +31,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
override func setUp() { override func setUp() {
cancellables.removeAll() cancellables.removeAll()
roomProxyMock = RoomProxyMock(with: .init(name: "Test")) roomProxyMock = RoomProxyMock(.init(name: "Test"))
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()) notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
@@ -46,7 +46,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testLeaveRoomTappedWhenPublic() async throws { func testLeaveRoomTappedWhenPublic() async throws {
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: true, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -67,7 +67,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testLeaveRoomTappedWhenRoomNotPublic() async throws { func testLeaveRoomTappedWhenRoomNotPublic() async throws {
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: false, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -89,7 +89,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testLeaveRoomTappedWithLessThanTwoMembers() async { func testLeaveRoomTappedWithLessThanTwoMembers() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: false, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -141,7 +141,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testInitialDMDetailsState() async throws { func testInitialDMDetailsState() async throws {
let recipient = RoomMemberProxyMock.mockDan let recipient = RoomMemberProxyMock.mockDan
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -163,7 +163,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
let recipient = RoomMemberProxyMock.mockDan let recipient = RoomMemberProxyMock.mockDan
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -196,7 +196,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
let clientProxy = ClientProxyMock(.init()) let clientProxy = ClientProxyMock(.init())
clientProxy.ignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic)) clientProxy.ignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: clientProxy, clientProxy: clientProxy,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -228,7 +228,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testUnignoreSuccess() async throws { func testUnignoreSuccess() async throws {
let recipient = RoomMemberProxyMock.mockIgnored let recipient = RoomMemberProxyMock.mockIgnored
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -261,7 +261,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
let clientProxy = ClientProxyMock(.init()) let clientProxy = ClientProxyMock(.init())
clientProxy.unignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic)) clientProxy.unignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: clientProxy, clientProxy: clientProxy,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -292,10 +292,10 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testCannotInvitePeople() async { func testCannotInvitePeople() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", roomProxyMock = RoomProxyMock(.init(name: "Test",
isPublic: true, isPublic: true,
members: mockedMembers, members: mockedMembers,
canUserInvite: false)) canUserInvite: false))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -311,7 +311,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testInvitePeople() async { func testInvitePeople() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isPublic: true, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -343,7 +343,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testCanEditAvatar() async { func testCanEditAvatar() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
.success(event == .roomAvatar) .success(event == .roomAvatar)
} }
@@ -365,7 +365,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testCanEditName() async { func testCanEditName() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
.success(event == .roomName) .success(event == .roomName)
} }
@@ -387,7 +387,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testCanEditTopic() async { func testCanEditTopic() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in roomProxyMock.canUserUserIDSendStateEventClosure = { _, event in
.success(event == .roomTopic) .success(event == .roomTopic)
} }
@@ -409,7 +409,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testCannotEditRoom() async { func testCannotEditRoom() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -428,7 +428,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
func testCannotEditDirectRoom() async { func testCannotEditDirectRoom() async {
let mockedMembers: [RoomMemberProxyMock] = [.mockMeAdmin, .mockBob, .mockAlice] let mockedMembers: [RoomMemberProxyMock] = [.mockMeAdmin, .mockBob, .mockAlice]
roomProxyMock = RoomProxyMock(with: .init(name: "Test", isDirect: true, isPublic: false, members: mockedMembers)) roomProxyMock = RoomProxyMock(.init(name: "Test", isDirect: true, isPublic: false, members: mockedMembers))
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
clientProxy: ClientProxyMock(.init()), clientProxy: ClientProxyMock(.init()),
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -171,7 +171,7 @@ class RoomFlowCoordinatorTests: XCTestCase {
// "Join" the room // "Join" the room
clientProxy.roomForIdentifierClosure = { _ in clientProxy.roomForIdentifierClosure = { _ in
RoomProxyMock(with: .init()) RoomProxyMock(.init())
} }
try await process(route: .room(roomID: "InvitedRoomID", via: [])) try await process(route: .room(roomID: "InvitedRoomID", via: []))
@@ -201,7 +201,7 @@ class RoomFlowCoordinatorTests: XCTestCase {
// "Join" the room // "Join" the room
clientProxy.roomForIdentifierClosure = { _ in clientProxy.roomForIdentifierClosure = { _ in
RoomProxyMock(with: .init()) RoomProxyMock(.init())
} }
try await process(route: .room(roomID: "InvitedRoomID", via: [])) try await process(route: .room(roomID: "InvitedRoomID", via: []))
@@ -291,12 +291,6 @@ class RoomFlowCoordinatorTests: XCTestCase {
} }
} }
let mediaProvider = MockMediaProvider()
let voiceMessageMediaManager = VoiceMessageMediaManagerMock()
let userSession = MockUserSession(clientProxy: clientProxy,
mediaProvider: mediaProvider,
voiceMessageMediaManager: voiceMessageMediaManager)
let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator()) let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator())
navigationStackCoordinator = NavigationStackCoordinator() navigationStackCoordinator = NavigationStackCoordinator()
navigationSplitCoordinator.setDetailCoordinator(navigationStackCoordinator) navigationSplitCoordinator.setDetailCoordinator(navigationStackCoordinator)
@@ -309,7 +303,7 @@ class RoomFlowCoordinatorTests: XCTestCase {
} }
roomFlowCoordinator = await RoomFlowCoordinator(roomID: roomID, roomFlowCoordinator = await RoomFlowCoordinator(roomID: roomID,
userSession: userSession, userSession: UserSessionMock(.init(clientProxy: clientProxy)),
isChildFlow: asChildFlow, isChildFlow: asChildFlow,
roomTimelineControllerFactory: timelineControllerFactory, roomTimelineControllerFactory: timelineControllerFactory,
navigationStackCoordinator: navigationStackCoordinator, navigationStackCoordinator: navigationStackCoordinator,
@@ -26,7 +26,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
var context: RoomMemberDetailsScreenViewModelType.Context { viewModel.context } var context: RoomMemberDetailsScreenViewModelType.Context { viewModel.context }
override func setUp() async throws { override func setUp() async throws {
roomProxyMock = RoomProxyMock(with: .init(name: "")) roomProxyMock = RoomProxyMock(.init(name: ""))
roomProxyMock.getMemberUserIDClosure = { _ in roomProxyMock.getMemberUserIDClosure = { _ in
.success(self.roomMemberProxyMock) .success(self.roomMemberProxyMock)
@@ -286,7 +286,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
} }
private func setup(with members: [RoomMemberProxyMock]) { private func setup(with members: [RoomMemberProxyMock]) {
roomProxy = RoomProxyMock(with: .init(name: "test", members: members)) roomProxy = RoomProxyMock(.init(name: "test", members: members))
viewModel = .init(roomProxy: roomProxy, viewModel = .init(roomProxy: roomProxy,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
userIndicatorController: ServiceLocator.shared.userIndicatorController, userIndicatorController: ServiceLocator.shared.userIndicatorController,
@@ -28,12 +28,12 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
override func setUpWithError() throws { override func setUpWithError() throws {
cancellables.removeAll() cancellables.removeAll()
roomProxyMock = RoomProxyMock(with: .init(name: "Test")) roomProxyMock = RoomProxyMock(.init(name: "Test"))
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()) notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
} }
func testInitialStateDefaultModeEncryptedRoom() async throws { func testInitialStateDefaultModeEncryptedRoom() async throws {
let roomProxyMock = RoomProxyMock(with: .init(name: "Test", isEncrypted: true)) let roomProxyMock = RoomProxyMock(.init(name: "Test", isEncrypted: true))
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()) let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true)) notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
@@ -55,7 +55,7 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
} }
func testInitialStateDefaultModeEncryptedRoomWithCanPushEncrypted() async throws { func testInitialStateDefaultModeEncryptedRoomWithCanPushEncrypted() async throws {
let roomProxyMock = RoomProxyMock(with: .init(name: "Test", isEncrypted: true)) let roomProxyMock = RoomProxyMock(.init(name: "Test", isEncrypted: true))
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: .init(canPushEncryptedEvents: true)) let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: .init(canPushEncryptedEvents: true))
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true)) notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
@@ -77,7 +77,7 @@ class RoomNotificationSettingsScreenViewModelTests: XCTestCase {
} }
func testInitialStateDefaultModeUnencryptedRoom() async throws { func testInitialStateDefaultModeUnencryptedRoom() async throws {
let roomProxyMock = RoomProxyMock(with: .init(name: "Test", isEncrypted: false)) let roomProxyMock = RoomProxyMock(.init(name: "Test", isEncrypted: false))
let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()) let notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true)) notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneReturnValue = RoomNotificationSettingsProxyMock(with: .init(mode: .mentionsAndKeywordsOnly, isDefault: true))
@@ -83,7 +83,7 @@ class RoomRolesAndPermissionsScreenViewModelTests: XCTestCase {
} }
private func setupViewModel(members: [RoomMemberProxyMock]) { private func setupViewModel(members: [RoomMemberProxyMock]) {
roomProxy = RoomProxyMock(with: .init(members: members)) roomProxy = RoomProxyMock(.init(members: members))
viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy, viewModel = RoomRolesAndPermissionsScreenViewModel(roomProxy: roomProxy,
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
analytics: ServiceLocator.shared.analytics) analytics: ServiceLocator.shared.analytics)
@@ -333,7 +333,7 @@ class RoomScreenViewModelTests: XCTestCase {
MockRoomTimelineController, MockRoomTimelineController,
NotificationCenterMock) { NotificationCenterMock) {
let notificationCenter = NotificationCenterMock() let notificationCenter = NotificationCenterMock()
let roomProxy = RoomProxyMock(with: .init(name: "")) let roomProxy = RoomProxyMock(.init(name: ""))
let timelineProxy = TimelineProxyMock() let timelineProxy = TimelineProxyMock()
timelineProxy.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher() timelineProxy.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher()
@@ -371,8 +371,7 @@ class RoomScreenViewModelTests: XCTestCase {
// When showing them in a timeline. // When showing them in a timeline.
let timelineController = MockRoomTimelineController() let timelineController = MockRoomTimelineController()
timelineController.timelineItems = [message] timelineController.timelineItems = [message]
let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "", let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
mediaPlayerProvider: MediaPlayerProviderMock(), mediaPlayerProvider: MediaPlayerProviderMock(),
@@ -396,7 +395,7 @@ class RoomScreenViewModelTests: XCTestCase {
private func makeViewModel(roomProxy: RoomProxyProtocol? = nil, private func makeViewModel(roomProxy: RoomProxyProtocol? = nil,
focussedEventID: String? = nil, focussedEventID: String? = nil,
timelineController: RoomTimelineControllerProtocol) -> RoomScreenViewModel { timelineController: RoomTimelineControllerProtocol) -> RoomScreenViewModel {
RoomScreenViewModel(roomProxy: roomProxy ?? RoomProxyMock(with: .init(name: "")), RoomScreenViewModel(roomProxy: roomProxy ?? RoomProxyMock(.init(name: "")),
focussedEventID: focussedEventID, focussedEventID: focussedEventID,
timelineController: timelineController, timelineController: timelineController,
mediaProvider: MockMediaProvider(), mediaProvider: MockMediaProvider(),
@@ -27,9 +27,7 @@ class SettingsScreenViewModelTests: XCTestCase {
@MainActor override func setUpWithError() throws { @MainActor override func setUpWithError() throws {
cancellables.removeAll() cancellables.removeAll()
let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "")), let userSession = UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: ""))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
viewModel = SettingsScreenViewModel(userSession: userSession, appSettings: ServiceLocator.shared.settings) viewModel = SettingsScreenViewModel(userSession: userSession, appSettings: ServiceLocator.shared.settings)
context = viewModel.context context = viewModel.context
} }
@@ -32,9 +32,7 @@ class StartChatScreenViewModelTests: XCTestCase {
clientProxy = .init(.init(userID: "")) clientProxy = .init(.init(userID: ""))
userDiscoveryService = UserDiscoveryServiceMock() userDiscoveryService = UserDiscoveryServiceMock()
userDiscoveryService.searchProfilesWithReturnValue = .success([]) userDiscoveryService.searchProfilesWithReturnValue = .success([])
let userSession = MockUserSession(clientProxy: clientProxy, let userSession = UserSessionMock(.init(clientProxy: clientProxy))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock())
viewModel = StartChatScreenViewModel(userSession: userSession, viewModel = StartChatScreenViewModel(userSession: userSession,
analytics: ServiceLocator.shared.analytics, analytics: ServiceLocator.shared.analytics,
userIndicatorController: UserIndicatorControllerMock(), userIndicatorController: UserIndicatorControllerMock(),
@@ -37,17 +37,12 @@ class UserSessionFlowCoordinatorTests: XCTestCase {
cancellables.removeAll() cancellables.removeAll()
clientProxy = ClientProxyMock(.init(userID: "hi@bob", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))) clientProxy = ClientProxyMock(.init(userID: "hi@bob", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))
timelineControllerFactory = RoomTimelineControllerFactoryMock(configuration: .init()) timelineControllerFactory = RoomTimelineControllerFactoryMock(configuration: .init())
let mediaProvider = MockMediaProvider()
let voiceMessageMediaManager = VoiceMessageMediaManagerMock()
let userSession = MockUserSession(clientProxy: clientProxy,
mediaProvider: mediaProvider,
voiceMessageMediaManager: voiceMessageMediaManager)
navigationRootCoordinator = NavigationRootCoordinator() navigationRootCoordinator = NavigationRootCoordinator()
notificationManager = NotificationManagerMock() notificationManager = NotificationManagerMock()
userSessionFlowCoordinator = UserSessionFlowCoordinator(userSession: userSession, userSessionFlowCoordinator = UserSessionFlowCoordinator(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
navigationRootCoordinator: navigationRootCoordinator, navigationRootCoordinator: navigationRootCoordinator,
appLockService: AppLockServiceMock(), appLockService: AppLockServiceMock(),
bugReportService: BugReportServiceMock(), bugReportService: BugReportServiceMock(),
@@ -31,9 +31,7 @@ class WaitlistScreenViewModelTests: XCTestCase {
XCTAssertNil(context.viewState.userSession, "No user session should be set on a new view model.") XCTAssertNil(context.viewState.userSession, "No user session should be set on a new view model.")
XCTAssertTrue(context.viewState.isWaiting, "The view should start off in the waiting state.") XCTAssertTrue(context.viewState.isWaiting, "The view should start off in the waiting state.")
viewModel.update(userSession: MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@alice:matrix.org")), viewModel.update(userSession: UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@alice:matrix.org")))))
mediaProvider: MockMediaProvider(),
voiceMessageMediaManager: VoiceMessageMediaManagerMock()))
XCTAssertNotNil(context.viewState.userSession, "The user session should have been updated.") XCTAssertNotNil(context.viewState.userSession, "The user session should have been updated.")
XCTAssertFalse(context.viewState.isWaiting, "The view should not be in the waiting state after setting a user session.") XCTAssertFalse(context.viewState.isWaiting, "The view should not be in the waiting state after setting a user session.")