# test.govlab/quality/core/stylelint/shrinkable-grid-track.stylelint.rule.test.ts

> 32 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-core-stylelint-shrinkable-grid-track-stylelint-rule-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/stylelint/shrinkable-grid-track.stylelint.rule.test.ts.txt

Listed in [test.govlab/quality/core/stylelint](https://banes-lab.com/api/source/testing/test.govlab/quality/core/stylelint.md), after [test.govlab/quality/core/stylelint/responsive-units.stylelint.rule.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/stylelint/responsive-units.stylelint.rule.test.ts.md).

## Contained in

- [test.govlab/quality/core/stylelint](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-quality-core-stylelint.md)

## Source

```typescript
import { describe, expect, it } from "vitest";
import shrinkableGridTrack from "@govlab/quality/core/stylelint/shrinkable-grid-track.stylelint.rule.ts";
import stylelint from "stylelint";

const RULE = "govlab/shrinkable-grid-track";

const lint = async function lint(code: string): Promise<readonly string[]> {
    const result = await stylelint.lint({ code, config: { plugins: [shrinkableGridTrack], rules: { [RULE]: true } } });
    return result.results.flatMap((entry) => entry.warnings.map((warning) => warning.rule));
};

describe("govlab/shrinkable-grid-track", () => {
    it("reports a bare fraction track", async () => {
        expect(await lint(".grid { grid-template-columns: 1fr; }")).toStrictEqual([RULE]);
    });

    it("reports a bare fraction beside a fixed track", async () => {
        expect(await lint(".row { grid-template-columns: auto 1fr; }")).toStrictEqual([RULE]);
    });

    it("reports a bare fraction repeated by repeat()", async () => {
        expect(await lint(".grid { grid-template-columns: repeat(3, 1fr); }")).toStrictEqual([RULE]);
    });

    it("reports a bare fraction in the implicit column size", async () => {
        expect(await lint(".grid { grid-auto-columns: 2fr; }")).toStrictEqual([RULE]);
    });

    it("allows a fraction that minmax() lets shrink", async () => {
        expect(await lint(".row { grid-template-columns: auto minmax(0, 1fr) auto; }")).toStrictEqual([]);
    });

    it("allows a fraction nested inside minmax() within repeat()", async () => {
        const code = ".cards { grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }";
        expect(await lint(code)).toStrictEqual([]);
    });

    it("leaves row tracks alone", async () => {
        expect(await lint(".grid { grid-template-rows: 1fr auto; }")).toStrictEqual([]);
    });
});
```
