test.govlab/quality/core/parsers/css.parser.test.ts

test.govlab/quality/core/parsers/css.parser.test.ts is a file in Codebase Testing. 41 lines of code and 0 definitions.

import {
    componentsInFile,
    definedVars,
    extractClamps,
    extractClassNames,
    scriptVarRefs,
    usedVars,
    valueUnits,
} from "@govlab/quality/core/parsers/css.parser.ts";
import { expect, test } from "vitest";

test("valueUnits reads each number and its unit and skips unitless words", () => {
    expect(valueUnits("1px solid 2rem auto 3")).toStrictEqual([
        { number: "1", unit: "px" },
        { number: "2", unit: "rem" },
    ]);
});

test("extractClassNames reads every class of a compound selector", () => {
    expect(extractClassNames(".card-title > .icon_x:hover")).toStrictEqual(["card-title", "icon_x"]);
    expect(extractClassNames("a .1bad")).toStrictEqual([]);
});

test("extractClamps splits each well-formed clamp into its three bounds", () => {
    expect(extractClamps("clamp(1rem, 2vw, 3rem) clamp(1px, 2px)")).toStrictEqual([
        { full: "clamp(1rem, 2vw, 3rem)", max: "3rem", min: "1rem", preferred: "2vw" },
    ]);
    expect(extractClamps("clamp(1rem, calc(2vw + 1px), 3rem")).toStrictEqual([]);
});

test("definedVars collects defined custom properties and ignores uses", () => {
    expect(definedVars(":root {\n  --brand: #fff;\n  --gap: 8px;\n}")).toStrictEqual(["--brand", "--gap"]);
    expect(definedVars(".x { color: var(--brand); }")).toStrictEqual([]);
});

test("usedVars and scriptVarRefs read references in stylesheets and scripts", () => {
    expect(usedVars(".x { color: var(--brand); }")).toStrictEqual(["--brand"]);
    expect(scriptVarRefs('el.style.setProperty("--drift", 1);')).toStrictEqual(["--drift"]);
});

test("componentsInFile finds each base component a selector defines", () => {
    expect([...componentsInFile(".btn-primary { color: red; }\n.menu, .card { }")]).toStrictEqual([
        "btn",
        "card",
        "menu",
    ]);
});