import Foundation @testable import LocalData struct MockMigration: StorageMigration { let destinationKey: StorageKey let shouldSucceed: Bool let shouldMigrateResult: Bool let migrationDelay: TimeInterval func shouldMigrate(using router: StorageRouter, context: MigrationContext) async throws -> Bool { try await Task.sleep(for: .seconds(0.1)) return shouldMigrateResult } func migrate(using router: StorageRouter, context: MigrationContext) async throws -> MigrationResult { try await Task.sleep(for: .seconds(migrationDelay)) if shouldSucceed { return MigrationResult(success: true, migratedCount: 1) } return MigrationResult( success: false, errors: [.transformationFailed("Mock failure")] ) } } struct FailingMigration: StorageMigration { let destinationKey: StorageKey let error: MigrationError func shouldMigrate(using router: StorageRouter, context: MigrationContext) async throws -> Bool { true } func migrate(using router: StorageRouter, context: MigrationContext) async throws -> MigrationResult { MigrationResult(success: false, errors: [error]) } }