import path from "path"
import { fromPath, SpecDirectory } from "../../lib-js/spec-directory"
describe("SpecDirectory iteration", () => {
describe("forEachTest", () => {
let dir: SpecDirectory
beforeAll(async () => {
dir = await fromPath(path.resolve(__dirname, "./fixtures/iterate"))
})
it("iterates through all test directories", async () => {
const testCases: string[] = []
await dir.forEachTest(async (subdir) => {
testCases.push(subdir.relPath())
})
expect(testCases).toContain("iterate/physical")
expect(testCases).toContain("iterate/archive/scss")
// counts directories with input.sass as valid
expect(testCases).toContain("iterate/archive/indented")
// does not iterate through directories without an input file
expect(testCases).not.toContain("iterate/archive/no-input")
})
it("works when passed in a single path argument", async () => {
const testCases: string[] = []
await dir.forEachTest(
async (subdir) => {
testCases.push(subdir.relPath())
},
["iterate/archive"]
)
expect(testCases).not.toContain("iterate/physical")
expect(testCases).toContain("iterate/archive/scss")
expect(testCases).toContain("iterate/archive/indented")
})
it("works when passed in multiple path arguments", async () => {
const testCases: string[] = []
await dir.forEachTest(
async (subdir) => {
testCases.push(subdir.relPath())
},
["iterate/physical", "iterate/archive/scss"]
)
expect(testCases).toContain("iterate/physical")
expect(testCases).toContain("iterate/archive/scss")
expect(testCases).not.toContain("iterate/archive/indented")
})
it("works when one path is under another", async () => {
const testCases: string[] = []
await dir.forEachTest(
async (subdir) => {
testCases.push(subdir.relPath())
},
["iterate/archive", "iterate/archive/scss"]
)
expect(testCases).not.toContain("iterate/physical")
expect(testCases).toContain("iterate/archive/scss")
expect(testCases).toContain("iterate/archive/indented")
})
it("throws when an unknown path is passed", async () => {
const testCases: string[] = []
await expect(
dir.forEachTest(
async (subdir) => {
testCases.push(subdir.relPath())
},
["iterate/archive", "iterate/unknown"]
)
).rejects.toThrow("Path iterate/unknown doesn't exist")
})
})
})