import postcss, { Root } from "postcss"; import variableCompress, { variableCompressParameters } from "./index"; async function run( input: string | { toString(): string } | Root, output: string, opts?: | variableCompressParameters[] | (string | ((e: any) => any))[] | undefined ) { let result = await postcss([variableCompress(opts)]).process(input, { from: undefined, }); expect(result.css).toEqual(output); expect(result.warnings()).toHaveLength(0); } it("Shorten css variables", async () => { await run( `:root { --first-color: #16f; --second-color: #ff7; --2: #000; } #firstParagraph { background-color: var(--first-color); color: var(--second-color); } #secondParagraph { background-color: var(--second-color); color: var(--first-color); } #container { --first-color: #290; } #thirdParagraph { background-color: var(--first-color); color: var(--second-color); } .section-title { color: var(--primary-color, var(--black, #222)); } code { --5: #555; }`, `:root { --0: #16f; --1: #ff7; --2: #000; } #firstParagraph { background-color: var(--0); color: var(--1); } #secondParagraph { background-color: var(--1); color: var(--0); } #container { --0: #290; } #thirdParagraph { background-color: var(--0); color: var(--1); } .section-title { color: var(--primary-color, var(--3, #222)); } code { --5: #555; }`, [ "--primary-color", "2", (e: string | string[]) => e.includes("special"), (e: string) => e === "--5", ] ); }); it("Support reloading. Now the plugin will reset mapped variables", async () => { await run( `:root{--first-color: #16f;--second-color: #ff7;}`, `:root{--0: #16f;--1: #ff7;}`, [] ); await run( `:root{--second-color: #ff7;--first-color: #16f;}`, `:root{--0: #ff7;--1: #16f;}`, [] ); }); it("Base array check or no array", async () => { run(`:root{}`, `:root{}`); });