test.build/core/converters/graph.code.converter.test.ts

test.build/core/converters/graph.code.converter.test.ts is a file in Codebase Testing. 36 lines of code and 0 definitions.

import { BUILD_TAB, PLANS, ROUTE, STOPS } from "./graph.fixture.ts";
import {
    citationOf,
    numbersIn,
    sectionNumbers,
    siteCodes,
} from "@banes-lab/build-scripts/core/converters/graph.code.converter.ts";
import { describe, expect, it } from "vitest";

describe("sectionNumbers", () => {
    it("gives a route stop its position and every other section the next number after the route", () => {
        const numbers = sectionNumbers(PLANS, STOPS);
        expect(numbers.get("chapter:/p#taught")).toBe("1");
        expect(numbers.get("chapter:/p#narrative")).toBe("2");
    });
});

describe("siteCodes and citationOf", () => {
    it("gives a routed tab its stop's code, every other tab the next free code, and each page a letter", () => {
        const codes = siteCodes([ROUTE, BUILD_TAB], PLANS, STOPS);
        expect([...codes.tabs]).toStrictEqual([
            ["/p", "aa"],
            ["/p/build", "ab"],
        ]);
        expect([...codes.pages]).toStrictEqual([["p", "a"]]);
        const numbers = sectionNumbers(PLANS, STOPS);
        const [narrative, taught] = PLANS;
        expect(taught === undefined ? null : citationOf(taught, numbers, codes)).toBe("aa1");
        expect(narrative === undefined ? null : citationOf(narrative, new Map(), codes)).toBeNull();
    });
});

describe("numbersIn", () => {
    it("reads each numbered node of a relation graph report and skips the rest", () => {
        const report = { graph: { nodes: [{ number: "3", ref: "chapter:/p#a" }, { ref: "chapter:/p#b" }] } };
        expect([...numbersIn(report)]).toStrictEqual([["chapter:/p#a", "3"]]);
        expect(numbersIn(null).size).toBe(0);
    });
});