Template support for input parameters #4

Merged
javier merged 81 commits from feature/arguments-templating into main 2025-02-17 22:11:06 +00:00
4 changed files with 62 additions and 9 deletions
Showing only changes of commit 720ad687fb - Show all commits

View File

@ -1,10 +1,29 @@
enum Folder: String {
case app = "App/Sources"
case libraryPublic = "Library/Sources/Public"
case libraryInternal = "Library/Sources/Internal"
case testCasesPublic = "Test/Sources/Cases/Public"
case testCasesInternal = "Test/Sources/Cases/Internal"
case testHelpers = "Test/Sources/Helpers"
enum Folder {
case app
case libraryPublic
case libraryInternal
case testCasesPublic
case testCasesInternal
case testHelpers
}
// MARK: - Properties
extension Folder {
// MARK: Computed
var path: String {
switch self {
case .app: "App/Sources"
case .libraryPublic: "Library/Sources/Public"
case .libraryInternal: "Library/Sources/Internal"
case .testCasesPublic: "Test/Sources/Cases/Public"
case .testCasesInternal: "Test/Sources/Cases/Internal"
case .testHelpers: "Test/Sources/Helpers"
}
}
}
// MARK: - CaseIterable

View File

@ -15,7 +15,7 @@ public struct CreateFoldersTask {
// MARK: Functions
public func callAsFunction(at rootFolder: URL) async throws {
let folders = Folder.allCases.map { rootFolder.appendingPath($0.rawValue) }
let folders = Folder.allCases.map { rootFolder.appendingPath($0.path) }
for folder in folders {
try await fileService.createFolder(at: folder)

View File

@ -0,0 +1,34 @@
import Testing
@testable import ColibriLibrary
struct FolderTests {
// MARK: Properties tests
@Test(arguments: zip(Folder.allCases, Expectation.paths))
func paths(for folder: Folder, expects path: String) async throws {
// GIVEN
// WHEN
let result = folder.path
// THEN
#expect(result == path)
}
}
// MARK: - Expectations
private extension FolderTests {
enum Expectation {
static let paths: [String] = [
"App/Sources",
"Library/Sources/Public",
"Library/Sources/Internal",
"Test/Sources/Cases/Public",
"Test/Sources/Cases/Internal",
"Test/Sources/Helpers"
]
}
}

View File

@ -14,7 +14,7 @@ struct CreateFoldersTaskTests {
@Test(arguments: [URL.someCurrentFolder, .someDotFolder, .someTildeFolder])
func createFolders(with rootFolder: URL) async throws {
// GIVEN
let folders = Folder.allCases.map { rootFolder.appendingPath($0.rawValue) }
let folders = Folder.allCases.map { rootFolder.appendingPath($0.path) }
let actions = folders.map { FileServiceMock.Action.createFolder($0) }
let createFolders = task(actions: actions)