mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Introduce flow parameters to simplify dependencies for child flows. (#4448)
This commit is contained in:
@@ -33,19 +33,21 @@ class ChatsFlowCoordinatorTests: XCTestCase {
|
||||
|
||||
notificationManager = NotificationManagerMock()
|
||||
|
||||
chatsFlowCoordinator = ChatsFlowCoordinator(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||
isNewLogin: false,
|
||||
let flowParameters = CommonFlowParameters(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||
bugReportService: BugReportServiceMock(.init()),
|
||||
elementCallService: ElementCallServiceMock(.init()),
|
||||
timelineControllerFactory: timelineControllerFactory,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
appHooks: AppHooks(),
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
notificationManager: notificationManager,
|
||||
stateMachineFactory: stateMachineFactory)
|
||||
chatsFlowCoordinator = ChatsFlowCoordinator(isNewLogin: false,
|
||||
navigationSplitCoordinator: splitCoordinator,
|
||||
appLockService: AppLockServiceMock(),
|
||||
bugReportService: BugReportServiceMock(.init()),
|
||||
elementCallService: ElementCallServiceMock(.init()),
|
||||
timelineControllerFactory: timelineControllerFactory,
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
appHooks: AppHooks(),
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
notificationManager: notificationManager,
|
||||
stateMachineFactory: stateMachineFactory)
|
||||
flowParameters: flowParameters)
|
||||
|
||||
let deferred = deferFulfillment(stateMachineFactory.chatsFlowStatePublisher) { $0 == .roomList(roomListSelectedRoomID: nil) }
|
||||
chatsFlowCoordinator.start()
|
||||
|
||||
@@ -14,17 +14,19 @@ import XCTest
|
||||
class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
private var viewModel: NotificationSettingsEditScreenViewModelProtocol!
|
||||
private var notificationSettingsProxy: NotificationSettingsProxyMock!
|
||||
private var userSession: UserSessionProtocol!
|
||||
private var userSession: UserSessionMock!
|
||||
private var clientProxy: ClientProxyMock!
|
||||
|
||||
private var context: NotificationSettingsEditScreenViewModelType.Context {
|
||||
viewModel.context
|
||||
}
|
||||
|
||||
@MainActor override func setUpWithError() throws {
|
||||
let clientProxy = ClientProxyMock(.init(userID: "@a:b.com"))
|
||||
userSession = UserSessionMock(.init(clientProxy: clientProxy))
|
||||
notificationSettingsProxy = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .allMessages
|
||||
|
||||
clientProxy = ClientProxyMock(.init(userID: "@a:b.com", notificationSettings: notificationSettingsProxy))
|
||||
userSession = UserSessionMock(.init(clientProxy: clientProxy))
|
||||
}
|
||||
|
||||
func testFetchSettings() async throws {
|
||||
@@ -36,9 +38,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
return .mentionsAndKeywordsOnly
|
||||
}
|
||||
}
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat, userSession: userSession)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
@@ -75,9 +75,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxy.canPushEncryptedEventsToDeviceClosure = {
|
||||
true
|
||||
}
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat, userSession: userSession)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
@@ -104,9 +102,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testSetModeAllMessages() async throws {
|
||||
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .mentionsAndKeywordsOnly
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat, userSession: userSession)
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
@@ -142,9 +138,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testSetModeMentions() async throws {
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat, userSession: userSession)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
@@ -183,9 +177,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
func testSetModeDirectChats() async throws {
|
||||
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .mentionsAndKeywordsOnly
|
||||
// Initialize for direct chats
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat, userSession: userSession)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
@@ -216,9 +208,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
func testSetModeFailure() async throws {
|
||||
notificationSettingsProxy.getDefaultRoomNotificationModeIsEncryptedIsOneToOneReturnValue = .mentionsAndKeywordsOnly
|
||||
notificationSettingsProxy.setDefaultRoomNotificationModeIsEncryptedIsOneToOneModeThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat, userSession: userSession)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
@@ -238,9 +228,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
|
||||
func testSelectRoom() async throws {
|
||||
let roomID = "!roomidentifier:matrix.org"
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .oneToOneChat, userSession: userSession)
|
||||
|
||||
let deferredActions = deferFulfillment(viewModel.actions) { action in
|
||||
switch action {
|
||||
|
||||
@@ -358,18 +358,23 @@ class RoomFlowCoordinatorTests: XCTestCase {
|
||||
"1"
|
||||
}
|
||||
|
||||
roomFlowCoordinator = RoomFlowCoordinator(roomID: roomID,
|
||||
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||
isChildFlow: asChildFlow,
|
||||
let flowParameters = CommonFlowParameters(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||
bugReportService: BugReportServiceMock(.init()),
|
||||
elementCallService: ElementCallServiceMock(.init()),
|
||||
timelineControllerFactory: timelineControllerFactory,
|
||||
navigationStackCoordinator: navigationStackCoordinator,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
appHooks: AppHooks(),
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
notificationManager: NotificationManagerMock(),
|
||||
stateMachineFactory: StateMachineFactory())
|
||||
|
||||
roomFlowCoordinator = RoomFlowCoordinator(roomID: roomID,
|
||||
isChildFlow: asChildFlow,
|
||||
navigationStackCoordinator: navigationStackCoordinator,
|
||||
flowParameters: flowParameters)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,19 +35,23 @@ class UserSessionFlowCoordinatorTests: XCTestCase {
|
||||
|
||||
notificationManager = NotificationManagerMock()
|
||||
|
||||
userSessionFlowCoordinator = UserSessionFlowCoordinator(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||
isNewLogin: false,
|
||||
let flowParameters = CommonFlowParameters(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||
bugReportService: BugReportServiceMock(.init()),
|
||||
elementCallService: ElementCallServiceMock(.init()),
|
||||
timelineControllerFactory: timelineControllerFactory,
|
||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
appHooks: AppHooks(),
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
notificationManager: notificationManager,
|
||||
stateMachineFactory: stateMachineFactory)
|
||||
|
||||
userSessionFlowCoordinator = UserSessionFlowCoordinator(isNewLogin: false,
|
||||
navigationRootCoordinator: rootCoordinator,
|
||||
appLockService: AppLockServiceMock(),
|
||||
bugReportService: BugReportServiceMock(.init()),
|
||||
elementCallService: ElementCallServiceMock(.init()),
|
||||
timelineControllerFactory: timelineControllerFactory,
|
||||
appMediator: AppMediatorMock.default,
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
appHooks: AppHooks(),
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
notificationManager: notificationManager,
|
||||
stateMachineFactory: stateMachineFactory)
|
||||
flowParameters: flowParameters)
|
||||
|
||||
userSessionFlowCoordinator.start()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user