Switch to a custom HomeserverReachability instead of different publishers

This commit is contained in:
Stefan Ceriu
2026-06-24 19:14:27 +03:00
parent 3ccaa04554
commit 0bd32d24fd
15 changed files with 65 additions and 50 deletions
@@ -16,7 +16,7 @@ import Testing
struct MediaProviderTests {
private var mediaLoader: MediaLoaderMock
private var imageCache: MockImageCache
private var reachabilitySubject = CurrentValueSubject<NetworkMonitorReachability, Never>(.reachable)
private var reachabilitySubject = CurrentValueSubject<HomeserverReachability, Never>(.reachable)
var mediaProvider: MediaProvider!
@@ -40,7 +40,7 @@ struct MediaProviderTests {
mediaLoader.loadMediaContentForSourceClosure = { [reachabilitySubject] _ in
switch reachabilitySubject.value {
case .unreachable:
case .unreachable, .suspended:
reachabilitySubject.send(.reachable)
throw MediaProviderTestsError.error
case .reachable:
@@ -18,13 +18,13 @@ struct SecureBackupLogoutConfirmationScreenViewModelTests {
}
private var secureBackupController: SecureBackupControllerMock
private var reachabilitySubject: CurrentValueSubject<NetworkMonitorReachability, Never>
private var reachabilitySubject: CurrentValueSubject<HomeserverReachability, Never>
init() {
secureBackupController = SecureBackupControllerMock()
secureBackupController.keyBackupState = CurrentValueSubject<SecureBackupKeyBackupState, Never>(.enabled).asCurrentValuePublisher()
reachabilitySubject = CurrentValueSubject<NetworkMonitorReachability, Never>(.reachable)
reachabilitySubject = CurrentValueSubject<HomeserverReachability, Never>(.reachable)
viewModel = SecureBackupLogoutConfirmationScreenViewModel(secureBackupController: secureBackupController,
homeserverReachabilityPublisher: reachabilitySubject.asCurrentValuePublisher())
@@ -19,7 +19,7 @@ struct UserSessionFlowCoordinatorTests {
private let stateMachineFactory = PublishedStateMachineFactory()
private let networkReachabilitySubject: CurrentValueSubject<NetworkMonitorReachability, Never> = .init(.reachable)
private let homeserverReachabilitySubject: CurrentValueSubject<NetworkMonitorReachability, Never> = .init(.reachable)
private let homeserverReachabilitySubject: CurrentValueSubject<HomeserverReachability, Never> = .init(.reachable)
private var cancellables = Set<AnyCancellable>()
private var tabCoordinator: NavigationTabCoordinator<UserSessionFlowCoordinator.HomeTab>? {
@@ -228,6 +228,14 @@ struct UserSessionFlowCoordinatorTests {
// Then the indicator should be hidden now as everything is back to normal
#expect(userIndicatorController.submitIndicatorDelayCallsCount == 3)
#expect(retractReachabilityIndicatorCallsCount == 2)
// When the client is suspended.
homeserverReachabilitySubject.send(.suspended)
try await Task.sleep(for: .milliseconds(100))
// Then no unreachable indicator should be shown as the pause is intentional.
#expect(userIndicatorController.submitIndicatorDelayCallsCount == 3)
#expect(retractReachabilityIndicatorCallsCount == 3)
}
// MARK: - Helpers