// // MockService.swift // HarmonyTests // // Created by Hthik on 1/16/18. // Copyright © 2018 Hthik. All rights reserved. // import Foundation import CoreData @testable import Harmony struct MockService { let localizedName = "MockService" let identifier = "MockService" let latestChangeToken = Data(bytes: [1,2,3,4,5]) var records = Set() var changes = Set() } extension MockService: Service { func fetchAllRemoteRecords(context: NSManagedObjectContext, completionHandler: @escaping (Result<(Set, Data), FetchError>) -> Void) -> Progress { let progress = Progress(totalUnitCount: 0) context.perform { let result = Result<(Set, Data), FetchError>.success((self.records, Data())) progress.totalUnitCount = Int64(self.changes.count) progress.completedUnitCount = Int64(self.changes.count) completionHandler(result) } return progress } func fetchChangedRemoteRecords(changeToken: Data, context: NSManagedObjectContext, completionHandler: @escaping (Result<(Set, Set, Data), FetchError>) -> Void) -> Progress { let progress = Progress(totalUnitCount: 0) context.perform { let result: Result<(Set, Set, Data), FetchError> if changeToken == self.latestChangeToken { result = .success((self.changes, [], Data())) progress.totalUnitCount = Int64(self.changes.count) progress.completedUnitCount = Int64(self.changes.count) } else { result = .failure(.invalidChangeToken(changeToken)) } completionHandler(result) } return progress } func authenticate(withPresentingViewController viewController: UIViewController, completionHandler: @escaping (Result) -> Void) { } func authenticateInBackground(completionHandler: @escaping (Result) -> Void) { } func deauthenticate(completionHandler: @escaping (Result) -> Void) { } func upload(_ record: AnyRecord, metadata: [HarmonyMetadataKey: Any], context: NSManagedObjectContext, completionHandler: @escaping (Result) -> Void) -> Progress { fatalError() } func download(_ record: AnyRecord, version: Version, context: NSManagedObjectContext, completionHandler: @escaping (Result) -> Void) -> Progress { fatalError() } func delete(_ record: AnyRecord, completionHandler: @escaping (Result) -> Void) -> Progress { fatalError() } func upload(_ file: File, for record: AnyRecord, metadata: [HarmonyMetadataKey: Any], context: NSManagedObjectContext, completionHandler: @escaping (Result) -> Void) -> Progress { fatalError() } func download(_ remoteFile: RemoteFile, completionHandler: @escaping (Result) -> Void) -> Progress { fatalError() } func delete(_ remoteFile: RemoteFile, completionHandler: @escaping (Result) -> Void) -> Progress { fatalError() } func updateMetadata(_ metadata: [HarmonyMetadataKey: Any], for record: AnyRecord, completionHandler: @escaping (Result) -> Void) -> Progress { fatalError() } func fetchVersions(for record: AnyRecord, completionHandler: @escaping (Result<[Version], RecordError>) -> Void) -> Progress { fatalError() } }