amplify-swift/AmplifyPlugins/DataStore/Tests/AWSDataStorePluginTests/Migration/MockMutationSyncMigrationDe...

145 lines
4.9 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import XCTest
@testable import Amplify
@testable import AWSDataStorePlugin
class MockMutationSyncMetadataMigrationDelegate: MutationSyncMetadataMigrationDelegate {
var preconditionCheckError: DataStoreError?
var transactionError: DataStoreError?
var mutationSyncMetadataStoreEmptyOrMigratedError: DataStoreError?
var mutationSyncMetadataStoreEmptyOrMigratedResult: Bool = false
var containsDuplicateIdsAcrossModelsError: DataStoreError?
var containsDuplicateIdsAcrossModelsResult: Bool = false
var emptyMutationSyncMetadataStoreError: DataStoreError?
var emptyModelSyncMetadataStoreError: DataStoreError?
var removeMutationSyncMetadataCopyStoreError: DataStoreError?
var createMutationSyncMetadataCopyStoreError: DataStoreError?
var backfillMutationSyncMetadataError: DataStoreError?
var removeMutationSyncMetadataStoreError: DataStoreError?
var renameMutationSyncMetadataCopyError: DataStoreError?
var stepsCalled: [DelegateStep] = []
enum DelegateStep {
case precondition
case transaction
case mutationSyncMetadataStoreEmptyOrMigrated
case containsDuplicateIdsAcrossModels
case emptyMutationSyncMetadataStore
case emptyModelSyncMetadataStore
case removeMutationSyncMetadataCopyStore
case createMutationSyncMetadataCopyStore
case backfillMutationSyncMetadata
case removeMutationSyncMetadataStore
case renameMutationSyncMetadataCopy
}
func preconditionCheck() throws {
stepsCalled.append(.precondition)
if let preconditionCheckError = preconditionCheckError {
throw preconditionCheckError
}
}
func transaction(_ basicClosure: () throws -> Void) throws {
stepsCalled.append(.transaction)
if let transactionError = transactionError {
throw transactionError
}
try basicClosure()
}
func applyMigrationStep(_ step: MutationSyncMetadataMigrationStep) throws {
switch step {
case .emptyMutationSyncMetadataStore:
try emptyMutationSyncMetadataStore()
case .emptyModelSyncMetadataStore:
try emptyModelSyncMetadataStore()
case .removeMutationSyncMetadataCopyStore:
try removeMutationSyncMetadataCopyStore()
case .createMutationSyncMetadataCopyStore:
try createMutationSyncMetadataCopyStore()
case .backfillMutationSyncMetadata:
try backfillMutationSyncMetadata()
case .removeMutationSyncMetadataStore:
try removeMutationSyncMetadataStore()
case .renameMutationSyncMetadataCopy:
try renameMutationSyncMetadataCopy()
}
}
func mutationSyncMetadataStoreEmptyOrMigrated() throws -> Bool {
stepsCalled.append(.mutationSyncMetadataStoreEmptyOrMigrated)
if let error = mutationSyncMetadataStoreEmptyOrMigratedError {
throw error
}
return mutationSyncMetadataStoreEmptyOrMigratedResult
}
func containsDuplicateIdsAcrossModels() throws -> Bool {
stepsCalled.append(.containsDuplicateIdsAcrossModels)
if let error = containsDuplicateIdsAcrossModelsError {
throw error
}
return containsDuplicateIdsAcrossModelsResult
}
private func emptyMutationSyncMetadataStore() throws {
stepsCalled.append(.emptyMutationSyncMetadataStore)
if let error = emptyMutationSyncMetadataStoreError {
throw error
}
}
private func emptyModelSyncMetadataStore() throws {
stepsCalled.append(.emptyModelSyncMetadataStore)
if let error = emptyModelSyncMetadataStoreError {
throw error
}
}
private func removeMutationSyncMetadataCopyStore() throws {
stepsCalled.append(.removeMutationSyncMetadataCopyStore)
if let error = removeMutationSyncMetadataCopyStoreError {
throw error
}
}
private func createMutationSyncMetadataCopyStore() throws {
stepsCalled.append(.createMutationSyncMetadataCopyStore)
if let error = createMutationSyncMetadataCopyStoreError {
throw error
}
}
private func backfillMutationSyncMetadata() throws {
stepsCalled.append(.backfillMutationSyncMetadata)
if let error = backfillMutationSyncMetadataError {
throw error
}
}
private func removeMutationSyncMetadataStore() throws {
stepsCalled.append(.removeMutationSyncMetadataStore)
if let error = removeMutationSyncMetadataCopyStoreError {
throw error
}
}
private func renameMutationSyncMetadataCopy() throws {
stepsCalled.append(.renameMutationSyncMetadataCopy)
if let error = renameMutationSyncMetadataCopyError {
throw error
}
}
}