# test.govlab/quality/configuration/strings/validation.strings.test.ts

> 67 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-configuration-strings-validation-strings-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/configuration/strings/validation.strings.test.ts.txt

Listed in [test.govlab/quality/configuration/strings](https://banes-lab.com/api/source/testing/test.govlab/quality/configuration/strings.md), after [test.govlab/quality/configuration/strings/tool.strings.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/configuration/strings/tool.strings.test.ts.md).

## Contained in

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

## Source

```typescript
import {
    blockedPanel,
    constantAlias,
    constantAliasFix,
    constantDuplicate,
    constantDuplicateFix,
    danglingVar,
    danglingVarFix,
    deadVar,
    deadVarFix,
    duplicateComponent,
    duplicateComponentFix,
    duplicateValidator,
    fileNameSpace,
    findingAction,
    findingHead,
    findingMessage,
    folderNotKebab,
    manifestsFailed,
    mobileNotImported,
    mobileNotImportedFix,
    mobileWithoutBase,
    mobileWithoutBaseFix,
    ruleDerivationFailed,
    strayVar,
    strayVarFix,
    validationFailed,
} from "@govlab/quality/configuration/strings/validation.strings.ts";
import { describe, expect, it } from "vitest";

const COUNT = 3;

describe("validation strings", () => {
    it("name the constant, component and custom property each finding reports", () => {
        const lines: [string, string][] = [
            [constantAlias("A", "B"), "'B'"],
            [constantAliasFix("A", "B"), "'A'"],
            [constantDuplicate("MAX", COUNT), "3 files"],
            [constantDuplicateFix("MAX", COUNT), "3 consumers"],
            [duplicateComponent("card", COUNT), "'.card'"],
            [duplicateComponentFix("card"), "'.card'"],
            [deadVar("--gap"), "'--gap'"],
            [deadVarFix("--gap"), "var(--gap)"],
            [danglingVar("--gap"), "var(--gap)"],
            [danglingVarFix("--gap"), "'--gap'"],
            [strayVar("--gap"), "'--gap'"],
            [strayVarFix("--gap"), "'--gap'"],
            [mobileWithoutBase("a-mobile.css", "a.css"), "'a.css'"],
            [mobileWithoutBaseFix("a.css"), "'a.css'"],
            [mobileNotImported("a-mobile.css"), "'a-mobile.css'"],
            [mobileNotImportedFix("a-mobile.css", "a.css"), "'a.css'"],
            [fileNameSpace("a b.ts"), "'a b.ts'"],
            [folderNotKebab("Src"), "'Src'"],
            [duplicateValidator("naming"), '"naming"'],
        ];
        for (const [line, part] of lines) {
            expect(line).toContain(part);
        }
    });

    it("lay out the quality-gate panel and the validator failure headers", () => {
        expect(blockedPanel(COUNT)).toContain("3 finding(s)");
        expect(findingHead("a.ts:1", "naming")).toContain("naming");
        expect(findingMessage("m")).toBe("    m");
        expect(findingAction("split it")).toContain("split it");
        expect(validationFailed("install-registry")).toContain("install-registry");
        expect(manifestsFailed(COUNT)).toContain("3 stale declarations");
        expect(ruleDerivationFailed(COUNT)).toContain("3 hardcoded structural facts");
    });
});
```
