1
1
//
2
- // GeneratedCloudProviderMock .swift
2
+ // CloudProviderMock .swift
3
3
// CryptomatorCommonCoreTests
4
4
//
5
5
// Created by Philipp Schmid on 28.01.22.
6
6
// Copyright © 2022 Skymatic GmbH. All rights reserved.
7
7
//
8
8
9
+ #if DEBUG
9
10
import CryptomatorCloudAccessCore
10
11
import Foundation
11
12
import Promises
12
13
13
14
// swiftlint:disable all
14
15
15
- final class GeneratedCloudProviderMock : CloudProvider {
16
+ final class CloudProviderMock : CloudProvider {
17
+ var createdFolders : [ String ] {
18
+ return createFolderAtReceivedInvocations. map { $0. path }
19
+ }
20
+
21
+ var uploadFileLastModifiedDate : [ String : Date ] = [ : ]
22
+ var filesToDownload = [ String: Data] ( )
23
+ var cloudMetadata : [ String : CloudItemMetadata ] = [ : ]
24
+
25
+ init ( ) {
26
+ self . downloadFileFromToClosure = defaultDownloadFile ( from: to: )
27
+ self . uploadFileFromToReplaceExistingClosure = defaultUploadFile ( from: to: replaceExisting: )
28
+ self . fetchItemMetadataAtClosure = defaultFetchItemMetadata ( at: )
29
+ }
30
+
16
31
// MARK: - fetchItemMetadata
17
32
18
33
var fetchItemMetadataAtThrowableError : Error ?
@@ -36,6 +51,13 @@ final class GeneratedCloudProviderMock: CloudProvider {
36
51
return fetchItemMetadataAtClosure. map ( { $0 ( cloudPath) } ) ?? fetchItemMetadataAtReturnValue
37
52
}
38
53
54
+ private func defaultFetchItemMetadata( at cloudPath: CloudPath ) -> Promise < CloudItemMetadata > {
55
+ guard let metadata = cloudMetadata [ cloudPath. path] else {
56
+ return Promise ( CloudProviderError . itemNotFound)
57
+ }
58
+ return Promise ( metadata)
59
+ }
60
+
39
61
// MARK: - fetchItemList
40
62
41
63
var fetchItemListForFolderAtWithPageTokenThrowableError : Error ?
@@ -72,6 +94,18 @@ final class GeneratedCloudProviderMock: CloudProvider {
72
94
var downloadFileFromToReturnValue : Promise < Void > !
73
95
var downloadFileFromToClosure : ( ( CloudPath , URL ) -> Promise < Void > ) ?
74
96
97
+ private func defaultDownloadFile( from cloudPath: CloudPath , to localURL: URL ) -> Promise < Void > {
98
+ guard let data = filesToDownload [ cloudPath. path] else {
99
+ return Promise ( CloudProviderError . itemNotFound)
100
+ }
101
+ do {
102
+ try data. write ( to: localURL)
103
+ return Promise ( ( ) )
104
+ } catch {
105
+ return Promise ( error)
106
+ }
107
+ }
108
+
75
109
func downloadFile( from cloudPath: CloudPath , to localURL: URL ) -> Promise < Void > {
76
110
if let error = downloadFileFromToThrowableError {
77
111
return Promise ( error)
@@ -105,6 +139,15 @@ final class GeneratedCloudProviderMock: CloudProvider {
105
139
return uploadFileFromToReplaceExistingClosure. map ( { $0 ( localURL, cloudPath, replaceExisting) } ) ?? uploadFileFromToReplaceExistingReturnValue
106
140
}
107
141
142
+ private func defaultUploadFile( from localURL: URL , to cloudPath: CloudPath , replaceExisting: Bool ) -> Promise < CloudItemMetadata > {
143
+ do {
144
+ let data = try Data ( contentsOf: localURL)
145
+ return Promise ( CloudItemMetadata ( name: cloudPath. lastPathComponent, cloudPath: cloudPath, itemType: . file, lastModifiedDate: uploadFileLastModifiedDate [ cloudPath. path] , size: data. count) )
146
+ } catch {
147
+ return Promise ( error)
148
+ }
149
+ }
150
+
108
151
// MARK: - createFolder
109
152
110
153
var createFolderAtThrowableError : Error ?
@@ -187,7 +230,7 @@ final class GeneratedCloudProviderMock: CloudProvider {
187
230
var moveFileFromToReturnValue : Promise < Void > !
188
231
var moveFileFromToClosure : ( ( CloudPath , CloudPath ) -> Promise < Void > ) ?
189
232
190
- func moveFile( from sourceCloudPath: CloudPath , to targetCloudPath: CloudPath ) -> Promise < Void > {
233
+ public func moveFile( from sourceCloudPath: CloudPath , to targetCloudPath: CloudPath ) -> Promise < Void > {
191
234
if let error = moveFileFromToThrowableError {
192
235
return Promise ( error)
193
236
}
@@ -222,3 +265,4 @@ final class GeneratedCloudProviderMock: CloudProvider {
222
265
}
223
266
224
267
// swiftlint:enable all
268
+ #endif
0 commit comments