import FileClient import Foundation import Testing import TestSupport @Suite("FileClientTests") struct FileClientTests { @Test func createDirectory() async throws { try await withTemporaryDirectory { url in let fileClient = FileClient.liveValue let tempDir = url.appending(path: "temp") try await fileClient.createDirectory(tempDir) let isDirectory = try await fileClient.isDirectory(tempDir) #expect(isDirectory) } } @Test(arguments: ["vault.yml", "vault.yaml"]) func findVaultFile(fileName: String) async throws { try await withTemporaryDirectory { url in let fileClient = FileClient.liveValue let vaultFilePath = url.appending(path: fileName) try FileManager.default.createFile(atPath: vaultFilePath.cleanFilePath, contents: nil) let output = try await fileClient.findVaultFile(url)! #expect(output.cleanFilePath == vaultFilePath.cleanFilePath) let nilWhenFileNotDirectory = try await fileClient.findVaultFile(vaultFilePath) #expect(nilWhenFileNotDirectory == nil) } } @Test(arguments: ["vault.yml", "vault.yaml"]) func findVaultFileNestedInSubfolder(fileName: String) async throws { try await withTemporaryDirectory { url in let fileClient = FileClient.liveValue let subDir = url.appending(path: "sub") try await fileClient.createDirectory(subDir) let vaultFilePath = subDir.appending(path: fileName) try FileManager.default.createFile(atPath: vaultFilePath.cleanFilePath, contents: nil) let output = try await fileClient.findVaultFile(url)! #expect(output.cleanFilePath == vaultFilePath.cleanFilePath) } } @Test func findVaultFileReturnsNil() async throws { try await withTemporaryDirectory { url in let fileClient = FileClient.liveValue let subDir = url.appending(path: "sub") try await fileClient.createDirectory(subDir) let output = try await fileClient.findVaultFile(url) #expect(output == nil) } } }