44 lines
1.2 KiB
Swift
44 lines
1.2 KiB
Swift
|
import Foundation
|
||
|
import Testing
|
||
|
|
||
|
@testable import ColibriLibrary
|
||
|
|
||
|
struct CopyFilesTaskTests {
|
||
|
|
||
|
// MARK: Properties
|
||
|
|
||
|
private let spy = FileServiceSpy()
|
||
|
|
||
|
// MARK: Functions tests
|
||
|
|
||
|
@Test(arguments: zip([URL.someExistingFolder], [URL.someNewFolder]))
|
||
|
func copyFiles(from source: URL, to destination: URL) async throws {
|
||
|
// GIVEN
|
||
|
let filesToCopy = CopyFilesTask.filesToCopy
|
||
|
let destinations = filesToCopy.map { destination.appendingPath($0) }
|
||
|
let sources = filesToCopy.map { source.appendingPath($0) }
|
||
|
let actions = filesToCopy.indices.map { index -> FileServiceMock.Action in
|
||
|
.copyItem(sources[index], destinations[index])
|
||
|
}
|
||
|
|
||
|
let service = FileServiceMock(
|
||
|
currentFolder: .someCurrentFolder,
|
||
|
actions: actions,
|
||
|
spy: spy
|
||
|
)
|
||
|
|
||
|
let copyFiles = CopyFilesTask(fileService: service)
|
||
|
|
||
|
// WHEN
|
||
|
try await copyFiles(to: destination)
|
||
|
|
||
|
// THEN
|
||
|
#expect(spy.actions.count == actions.count)
|
||
|
|
||
|
for index in actions.indices {
|
||
|
#expect(spy.actions[index] == .itemCopied(sources[index], destinations[index]))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|