145 lines
4.9 KiB
Swift
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
|
|
}
|
|
}
|
|
}
|