test.govlab/patterns/core/loaders/source.loader.test.ts
test.govlab/patterns/core/loaders/source.loader.test.ts is a file in Codebase Testing. 42 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import {
entriesFor,
parseFile,
readSourceOrEmpty,
settleParses,
testUsesOf,
} from "@govlab/patterns/core/loaders/source.loader.ts";
import { mkdirSync, mkdtempSync } from "node:fs";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";
const pruned = function pruned(): boolean {
return false;
};
describe("the source loader", () => {
const root = mkdtempSync(join(tmpdir(), "pl-sources-"));
mkdirSync(join(root, "core"));
writeVerbatim(join(root, "core", "run.ts"), "export const run = function run(): number {\n return 1;\n};\n");
writeVerbatim(join(root, "core", "run.test.ts"), "expect(run()).toBe(1);\n");
it("reads a vanished file as empty", () => {
expect(readSourceOrEmpty(join(root, "missing.ts"))).toBe("");
});
it("parses files one after another and settles the queue", async () => {
const [first, second] = await Promise.all([
parseFile(join(root, "core", "run.ts")),
parseFile(join(root, "core", "run.test.ts")),
]);
await settleParses();
expect(first.symbols.map((symbol) => symbol.name)).toContain("run");
expect(second.records.length).toBeGreaterThan(0);
});
it("builds entries with module-relative paths and a walk of meaningful nodes", async () => {
const [entry] = await entriesFor(root, pruned);
expect(entry?.rel).toBe("core/run.ts");
expect(entry?.symbols.every((symbol) => symbol.file === "core/run.ts")).toBe(true);
expect(entry?.walk.length).toBeGreaterThan(0);
});
it("collects the identifiers the tests use", async () => {
expect(await testUsesOf(root, pruned)).toContain("run");
});
});