Introduce flow parameters to simplify dependencies for child flows. (#4448)

This commit is contained in:
Doug
2025-08-27 13:56:06 +01:00
committed by GitHub
parent c140209e0c
commit dfb2425240
22 changed files with 456 additions and 586 deletions
@@ -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 {