import ColibriLibrary import Foundation import Testing struct CreateRootFolderTaskTests { // MARK: Functions tests @Test(arguments: [String.someProjectName], [URL.someCurrentProjectFolder, .someNewProjectFolder]) func task( name: String, expects folder: URL ) async throws { // GIVEN let fileService = FileServiceMock( currentFolder: .someCurrentFolder, action: .createFolder(folder) ) let task = CreateRootFolderTask(fileService: fileService) // WHEN let result = try await task(name: name, at: folder == .someNewProjectFolder ? .someNewFolder : nil) // THEN #expect(result == folder) #expect(result.isFileURL == true) } @Test(arguments: [String.someProjectName], [FileServiceError.urlAlreadyExists]) func task( name: String, throws error: FileServiceError ) async throws { // GIVEN let fileService = FileServiceMock( currentFolder: .someCurrentFolder, action: .error(error) ) let task = CreateRootFolderTask(fileService: fileService) // WHEN // THEN await #expect(throws: error) { try await task(name: name) } } } // MARK: - String+Constants private extension String { static let someProjectName = "SomeProjectName" } // MARK: - URL+Constants private extension URL { static let someCurrentProjectFolder = URL.someCurrentFolder.appending(component: String.someProjectName) static let someNewProjectFolder = URL.someNewFolder.appending(component: String.someProjectName) }