test.rules/shared/selectors/specifier.selector.test.ts

test.rules/shared/selectors/specifier.selector.test.ts is a file in Codebase Testing. 23 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { specifierNodes, specifiersOf } from "@ssot/govlab/shared/selectors/specifier.selector.ts";
import ts from "typescript";

const CODE = [
    'import { a } from "./a.ts";',
    'import type { B } from "@scope/b";',
    'export { c } from "../c.ts";',
    'const d = await import("./d.ts");',
    'const e = "./not-a-specifier.ts";',
].join("\n");

describe("specifiersOf", () => {
    it("reads every import, re-export and dynamic import specifier, and no other string", () => {
        expect(specifiersOf("probe.ts", CODE)).toStrictEqual(["./a.ts", "@scope/b", "../c.ts", "./d.ts"]);
    });
});

describe("specifierNodes", () => {
    it("returns the literal nodes so a caller can report or rewrite at their position", () => {
        const source = ts.createSourceFile("probe.ts", CODE, ts.ScriptTarget.Latest, true);
        const [first] = specifierNodes(source);
        expect(first?.text).toBe("./a.ts");
        expect(first?.getStart(source)).toBe(CODE.indexOf('"./a.ts"'));
    });
});