// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import Foundation import AWSPluginsCore import Combine @testable import Amplify @testable import AmplifyTestCommon @testable import AWSDataStorePlugin typealias OnSubmitCallBack = (MutationEvent, @escaping (Result) -> Void) -> Void class MockRemoteSyncEngine: RemoteSyncEngineBehavior { var syncing = false func submit(_ mutationEvent: MutationEvent, completion: @escaping (Result) -> Void) { if let callback = callbackOnSubmit { callback(mutationEvent, completion) } else { completion(.success(mutationEvent)) } } let remoteSyncTopicPublisher: PassthroughSubject var callbackOnSubmit: OnSubmitCallBack? var success = true var publisher: AnyPublisher { return remoteSyncTopicPublisher.eraseToAnyPublisher() } init() { self.remoteSyncTopicPublisher = PassthroughSubject() } func start(api: APICategoryGraphQLBehaviorExtended, auth: AuthCategoryBehavior?) { syncing = true } func stop(completion: @escaping DataStoreCallback) { syncing = false completion(.successfulVoid) } func isSyncing() -> Bool { return syncing } func setCallbackOnSubmit(callbackOnSubmit: @escaping OnSubmitCallBack) { self.callbackOnSubmit = callbackOnSubmit } }