mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Adopt StateStoreViewModelV2 in the remaining settings screens. (#4158)
* Move the AuthenticationStartScreen into the Authentication directory.
* Commit the updated Sentry license.
No idea why they dropped the 2024 🤷♂️
* Use StateStoreViewModelV2 in BugReportScreen.
* Use StateStoreViewModelV2 in UserDetailsEditScreen.
* Use StateStoreViewModelV2 in NotificationSettingsScreen.
* Use StateStoreViewModelV2 in NotificationSettingsEditScreen.
* Use StateStoreViewModelV2 in LegalInformationScreen.
* Use StateStoreViewModelV2 in LogViewerScreen.
* Use StateStoreViewModelV2 in AnalyticsSettingsScreen.
* Rename AdvancedSettingsScreen directory.
* Use StateStoreViewModelV2 in EncryptionResetScreen.
* Use StateStoreViewModelV2 in EncryptionResetPasswordScreen.
* Use StateStoreViewModelV2 in SecureBackup…Screens.
* Use StateStoreViewModelV2 in LoginScreen.
Seems this one was ignored waiting on the fulfillment transitionValues implementation.
* Use StateStoreViewModelV2 in DeactivateAccountScreen.
* Move DeactivateAccountScreen into the Settings directory.
This commit is contained in:
@@ -61,7 +61,7 @@ class DeactivateAccountScreenViewModelTests: XCTestCase {
|
||||
|
||||
XCTAssertNil(context.alertInfo)
|
||||
|
||||
let deferredState = deferFulfillment(context.$viewState) { $0.bindings.alertInfo != nil }
|
||||
let deferredState = deferFulfillment(context.observe(\.viewState.bindings.alertInfo)) { $0 != nil }
|
||||
context.send(viewAction: .deactivate)
|
||||
try await deferredState.fulfill()
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ class LoginScreenViewModelTests: XCTestCase {
|
||||
XCTAssertFalse(context.viewState.canSubmit, "The form should not be submittable.")
|
||||
|
||||
// When updating the view model whilst loading a homeserver.
|
||||
let deferred = deferFulfillment(context.$viewState, keyPath: \.isLoading, transitionValues: [true, false])
|
||||
let deferred = deferFulfillment(context.observe(\.viewState.isLoading), transitionValues: [true, false])
|
||||
context.send(viewAction: .parseUsername)
|
||||
|
||||
// Then the view state should represent the loading but never allow submitting to occur.
|
||||
@@ -105,7 +105,7 @@ class LoginScreenViewModelTests: XCTestCase {
|
||||
XCTAssertTrue(context.viewState.canSubmit, "The form should be ready to submit.")
|
||||
|
||||
// When updating the view model whilst loading a homeserver.
|
||||
let deferred = deferFulfillment(context.$viewState, keyPath: \.canSubmit, transitionValues: [false, true])
|
||||
let deferred = deferFulfillment(context.observe(\.viewState.canSubmit), transitionValues: [false, true])
|
||||
context.send(viewAction: .parseUsername)
|
||||
|
||||
// Then the view should be blocked from submitting while loading and then become unblocked again.
|
||||
@@ -134,7 +134,7 @@ class LoginScreenViewModelTests: XCTestCase {
|
||||
XCTAssertNil(context.alertInfo, "There shouldn't be an alert when the screen loads.")
|
||||
|
||||
// When entering a username for an unsupported homeserver.
|
||||
let deferred = deferFulfillment(context.$viewState) { $0.bindings.alertInfo != nil }
|
||||
let deferred = deferFulfillment(context.observe(\.viewState.bindings.alertInfo)) { $0 != nil }
|
||||
context.username = "@bob:server.net"
|
||||
context.send(viewAction: .parseUsername)
|
||||
try await deferred.fulfill()
|
||||
|
||||
@@ -40,9 +40,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.defaultMode != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -81,9 +79,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.defaultMode != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -111,15 +107,14 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
viewModel = NotificationSettingsEditScreenViewModel(chatType: .groupChat,
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.defaultMode != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
var deferredViewState = deferFulfillment(viewModel.context.$viewState, keyPath: \.pendingMode, transitionValues: [nil, .allMessages, nil])
|
||||
var deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||
transitionValues: [nil, .allMessages, nil])
|
||||
|
||||
context.send(viewAction: .setMode(.allMessages))
|
||||
|
||||
@@ -137,8 +132,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(invocations[1].isOneToOne, false)
|
||||
XCTAssertEqual(invocations[1].mode, .allMessages)
|
||||
|
||||
deferredViewState = deferFulfillment(viewModel.context.$viewState,
|
||||
keyPath: \.defaultMode,
|
||||
deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode),
|
||||
transitionValues: [.allMessages])
|
||||
|
||||
try await deferredViewState.fulfill()
|
||||
@@ -152,16 +146,13 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.defaultMode != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
var deferredViewState = deferFulfillment(viewModel.context.$viewState,
|
||||
keyPath: \.pendingMode,
|
||||
var deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||
transitionValues: [nil, .mentionsAndKeywordsOnly, nil])
|
||||
|
||||
context.send(viewAction: .setMode(.mentionsAndKeywordsOnly))
|
||||
@@ -180,8 +171,7 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(invocations[1].isOneToOne, false)
|
||||
XCTAssertEqual(invocations[1].mode, .mentionsAndKeywordsOnly)
|
||||
|
||||
deferredViewState = deferFulfillment(viewModel.context.$viewState,
|
||||
keyPath: \.defaultMode,
|
||||
deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode),
|
||||
transitionValues: [.mentionsAndKeywordsOnly])
|
||||
|
||||
try await deferredViewState.fulfill()
|
||||
@@ -197,16 +187,13 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.defaultMode != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
let deferredViewState = deferFulfillment(viewModel.context.$viewState,
|
||||
keyPath: \.pendingMode,
|
||||
let deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||
transitionValues: [nil, .allMessages, nil])
|
||||
|
||||
context.send(viewAction: .setMode(.allMessages))
|
||||
@@ -233,16 +220,13 @@ class NotificationSettingsEditScreenViewModelTests: XCTestCase {
|
||||
userSession: userSession,
|
||||
notificationSettingsProxy: notificationSettingsProxy)
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.defaultMode != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.defaultMode)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
let deferredViewState = deferFulfillment(viewModel.context.$viewState,
|
||||
keyPath: \.pendingMode,
|
||||
let deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||
transitionValues: [nil, .allMessages, nil])
|
||||
|
||||
context.send(viewAction: .setMode(.allMessages))
|
||||
|
||||
@@ -58,9 +58,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -88,9 +86,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -112,9 +108,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -137,22 +131,21 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
var deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredSettings = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredSettings.fulfill()
|
||||
|
||||
XCTAssertEqual(context.viewState.settings?.directChatsMode, .allMessages)
|
||||
XCTAssertEqual(context.viewState.settings?.inconsistentSettings, [.init(chatType: .oneToOneChat, isEncrypted: false)])
|
||||
|
||||
deferred = deferFulfillment(viewModel.context.$viewState, keyPath: \.fixingConfigurationMismatch, transitionValues: [false, true, false])
|
||||
let deferredMismatch = deferFulfillment(viewModel.context.observe(\.viewState.fixingConfigurationMismatch),
|
||||
transitionValues: [false, true, false])
|
||||
|
||||
context.send(viewAction: .fixConfigurationMismatchTapped)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredMismatch.fulfill()
|
||||
|
||||
// Ensure we only fix the invalid setting: unencrypted one-to-one chats should be set to `.allMessages` (to match encrypted one-to-one chats)
|
||||
XCTAssertEqual(notificationSettingsProxy.setDefaultRoomNotificationModeIsEncryptedIsOneToOneModeCallsCount, 1)
|
||||
@@ -175,30 +168,24 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
var deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredSettings = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredSettings.fulfill()
|
||||
|
||||
XCTAssertEqual(context.viewState.settings?.directChatsMode, .allMessages)
|
||||
XCTAssertEqual(context.viewState.settings?.inconsistentSettings, [.init(chatType: .groupChat, isEncrypted: false), .init(chatType: .oneToOneChat, isEncrypted: false)])
|
||||
|
||||
deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.fixingConfigurationMismatch == true
|
||||
}
|
||||
var deferredMismatch = deferFulfillment(viewModel.context.observe(\.viewState.fixingConfigurationMismatch)) { $0 }
|
||||
|
||||
context.send(viewAction: .fixConfigurationMismatchTapped)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredMismatch.fulfill()
|
||||
|
||||
deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.fixingConfigurationMismatch == false
|
||||
}
|
||||
deferredMismatch = deferFulfillment(viewModel.context.observe(\.viewState.fixingConfigurationMismatch)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredMismatch.fulfill()
|
||||
|
||||
// All problems should be fixed
|
||||
XCTAssertEqual(notificationSettingsProxy.setDefaultRoomNotificationModeIsEncryptedIsOneToOneModeCallsCount, 2)
|
||||
@@ -216,9 +203,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleRoomMentionOff() async throws {
|
||||
notificationSettingsProxy.isRoomMentionEnabledReturnValue = true
|
||||
|
||||
let deferredState = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredState = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -241,9 +226,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleRoomMentionOn() async throws {
|
||||
notificationSettingsProxy.isRoomMentionEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
try await deferredInitialFetch.fulfill()
|
||||
@@ -266,9 +249,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxy.setRoomMentionEnabledEnabledThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
notificationSettingsProxy.isRoomMentionEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -276,17 +257,13 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
|
||||
context.roomMentionsEnabled = true
|
||||
|
||||
var deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == true
|
||||
}
|
||||
var deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { $0 }
|
||||
|
||||
context.send(viewAction: .roomMentionChanged)
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == false
|
||||
}
|
||||
deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
@@ -296,9 +273,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleCallsOff() async throws {
|
||||
notificationSettingsProxy.isCallEnabledReturnValue = true
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -320,9 +295,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleCallsOn() async throws {
|
||||
notificationSettingsProxy.isCallEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -346,9 +319,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxy.setCallEnabledEnabledThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
notificationSettingsProxy.isCallEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -356,17 +327,13 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
|
||||
context.callsEnabled = true
|
||||
|
||||
var deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == true
|
||||
}
|
||||
var deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { $0 }
|
||||
|
||||
context.send(viewAction: .callsChanged)
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == false
|
||||
}
|
||||
deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
@@ -376,9 +343,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleInvitationsOff() async throws {
|
||||
notificationSettingsProxy.isInviteForMeEnabledReturnValue = true
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -400,9 +365,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleInvitationsOn() async throws {
|
||||
notificationSettingsProxy.isInviteForMeEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -426,9 +389,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxy.setInviteForMeEnabledEnabledThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
notificationSettingsProxy.isInviteForMeEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -436,17 +397,13 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
|
||||
context.invitationsEnabled = true
|
||||
|
||||
var deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == true
|
||||
}
|
||||
var deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { $0 }
|
||||
|
||||
context.send(viewAction: .invitationsChanged)
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == false
|
||||
}
|
||||
deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
|
||||
@@ -48,12 +48,12 @@ class SecureBackupLogoutConfirmationScreenViewModelTests: XCTestCase {
|
||||
return .success(())
|
||||
}
|
||||
|
||||
let deferredWaiting = deferFulfillment(context.$viewState) { $0.mode == .waitingToStart(hasStalled: false) }
|
||||
let deferredWaiting = deferFulfillment(context.observe(\.viewState.mode)) { $0 == .waitingToStart(hasStalled: false) }
|
||||
context.send(viewAction: .logout)
|
||||
try await deferredWaiting.fulfill()
|
||||
|
||||
// Wait for the 2-second timeout.
|
||||
let deferredHasStalled = deferFulfillment(context.$viewState) { $0.mode == .waitingToStart(hasStalled: true) }
|
||||
let deferredHasStalled = deferFulfillment(context.observe(\.viewState.mode)) { $0 == .waitingToStart(hasStalled: true) }
|
||||
try await deferredHasStalled.fulfill()
|
||||
|
||||
// Wait for the progress to be reported.
|
||||
@@ -64,7 +64,7 @@ class SecureBackupLogoutConfirmationScreenViewModelTests: XCTestCase {
|
||||
func testOfflineState() async throws {
|
||||
try await testOngoingState()
|
||||
|
||||
let deferred = deferFulfillment(context.$viewState) { $0.mode == .offline }
|
||||
let deferred = deferFulfillment(context.observe(\.viewState.mode)) { $0 == .offline }
|
||||
reachabilitySubject.send(.unreachable)
|
||||
try await deferred.fulfill()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user