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",
]);
});