mirror of
https://github.com/bitwarden/ios.git
synced 2026-02-04 02:14:09 -06:00
[PM-30840] Migrate user personal vault on accept (#2257)
This commit is contained in:
parent
9ebeb99e70
commit
c191738368
@ -89,10 +89,17 @@ final class MigrateToMyItemsProcessor: StateProcessor<
|
||||
private func acceptTransfer() async {
|
||||
coordinator.showLoadingOverlay(LoadingOverlayState(title: Localizations.loading))
|
||||
|
||||
// TODO: PM-29709 Implement accept transfer API call
|
||||
|
||||
defer { coordinator.hideLoadingOverlay() }
|
||||
coordinator.navigate(to: .dismiss())
|
||||
do {
|
||||
try await services.vaultRepository.migratePersonalVault(to: state.organizationId)
|
||||
coordinator.hideLoadingOverlay()
|
||||
coordinator.navigate(to: .dismiss())
|
||||
} catch {
|
||||
coordinator.hideLoadingOverlay()
|
||||
await coordinator.showErrorAlert(error: error, onDismissed: {
|
||||
self.coordinator.navigate(to: .dismiss())
|
||||
})
|
||||
services.errorReporter.log(error: error)
|
||||
}
|
||||
}
|
||||
|
||||
/// Leaves the organization after declining the item transfer.
|
||||
|
||||
@ -46,6 +46,38 @@ class MigrateToMyItemsProcessorTests: BitwardenTestCase {
|
||||
vaultRepository = nil
|
||||
}
|
||||
|
||||
// MARK: Tests - AcceptTransferTapped Effect
|
||||
|
||||
/// `perform(_:)` with `.acceptTransferTapped` migrates the personal vault and dismisses.
|
||||
@MainActor
|
||||
func test_perform_acceptTransferTapped_success() async {
|
||||
vaultRepository.migratePersonalVaultResult = .success(())
|
||||
|
||||
await subject.perform(.acceptTransferTapped)
|
||||
|
||||
XCTAssertEqual(vaultRepository.migratePersonalVaultOrganizationId, "org-123")
|
||||
XCTAssertEqual(coordinator.routes.last, .dismiss())
|
||||
XCTAssertTrue(coordinator.alertShown.isEmpty)
|
||||
}
|
||||
|
||||
/// `perform(_:)` with `.acceptTransferTapped` shows an error alert and dismisses when migration fails.
|
||||
@MainActor
|
||||
func test_perform_acceptTransferTapped_error() async {
|
||||
vaultRepository.migratePersonalVaultResult = .failure(BitwardenTestError.example)
|
||||
|
||||
await subject.perform(.acceptTransferTapped)
|
||||
|
||||
XCTAssertEqual(vaultRepository.migratePersonalVaultOrganizationId, "org-123")
|
||||
XCTAssertEqual(coordinator.errorAlertsShown.count, 1)
|
||||
XCTAssertEqual(coordinator.errorAlertsShown.last as? BitwardenTestError, .example)
|
||||
XCTAssertEqual(errorReporter.errors.last as? BitwardenTestError, .example)
|
||||
|
||||
// Simulate alert dismissal to trigger the dismiss navigation.
|
||||
coordinator.alertOnDismissed?()
|
||||
|
||||
XCTAssertEqual(coordinator.routes.last, .dismiss())
|
||||
}
|
||||
|
||||
// MARK: Tests - Appeared Effect
|
||||
|
||||
/// `perform(_:)` with `.appeared` loads the organization name from the vault repository.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user