test.rules/shared/loaders/graph.loader.test.ts

test.rules/shared/loaders/graph.loader.test.ts is a file in Codebase Testing. 30 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { loadClosureGraph, normalizeImport } from "@ssot/govlab/shared/loaders/graph.loader.ts";

const FROM = ["core", "registries", "probe.registry.ts"].join("/");

describe("normalizeImport", () => {
    it("resolves a sibling import against the importing file's folder", () => {
        expect(normalizeImport(FROM, "./other.ts")).toBe(["core", "registries", "other.ts"].join("/"));
    });

    it("resolves a climbing import", () => {
        expect(normalizeImport(FROM, "../buses/other.ts")).toBe(["core", "buses", "other.ts"].join("/"));
    });

    it("refuses a package specifier, which the graph resolves by another route", () => {
        expect(normalizeImport(FROM, "@scope/package")).toBeNull();
        expect(normalizeImport(FROM, "node:path")).toBeNull();
    });

    it("refuses a relative target that does not name a TypeScript module", () => {
        expect(normalizeImport(FROM, "./styles.css")).toBeNull();
    });
});

describe("loadClosureGraph", () => {
    it("returns the parsed graph, null only when the graph has not been built, and throws on a malformed one", () => {
        const graph = loadClosureGraph();
        if (graph === null) {
            expect(graph).toBeNull();
            return;
        }
        expect(Array.isArray(graph.imports)).toBe(true);
        expect(Array.isArray(graph.exports)).toBe(true);
        expect(Array.isArray(graph.registers)).toBe(true);
    });
});