test.govlab/docs/core/selectors/markdown.selector.test.ts

test.govlab/docs/core/selectors/markdown.selector.test.ts is a file in Codebase Testing. 29 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { isProsePath, nextToken, pathSpans, trimEdges } from "@govlab/docs/core/selectors/markdown.selector.ts";

describe("trimEdges and isProsePath", () => {
    it("trim surrounding punctuation and a sentence full stop, keeping a double dot", () => {
        expect(trimEdges("(src/a.ts),")).toBe("src/a.ts");
        expect(trimEdges("src/a.ts.")).toBe("src/a.ts");
        expect(trimEdges("(src/a.ts).")).toBe("src/a.ts");
        expect(trimEdges("etc..")).toBe("etc..");
    });

    it("accept relative paths and paths with a known extension, and refuse URLs and packages", () => {
        expect(["./x", "src/a.ts", "https://x.dev/a.ts", "@scope/pkg/a.ts", "and/or"].map(isProsePath)).toStrictEqual([
            true,
            true,
            false,
            false,
            false,
        ]);
    });
});

describe("nextToken and pathSpans", () => {
    it("step over inline space and locate each path span in prose", () => {
        expect(nextToken("  word next", 0)).toStrictEqual({ next: 6, start: 2 });
        const prose = "Edit src/a.ts and (docs/b.md).";
        expect(pathSpans(prose).map(([start, end]) => prose.slice(start, end))).toStrictEqual([
            "src/a.ts",
            "docs/b.md",
        ]);
    });
});