# test.govlab/quality/core/classifiers/concern.classifier.test.ts

> 16 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-core-classifiers-concern-classifier-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/classifiers/concern.classifier.test.ts.txt

Listed in [test.govlab/quality/core/classifiers](https://banes-lab.com/api/source/testing/test.govlab/quality/core/classifiers.md), after [test.govlab/quality/core/classifiers/concept.classifier.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/classifiers/concept.classifier.test.ts.md) and before [test.govlab/quality/core/classifiers/invocation.classifier.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/classifiers/invocation.classifier.test.ts.md).

## Contained in

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

## Source

```typescript
import { concernOf, labelOf } from "@govlab/quality/core/classifiers/concern.classifier.ts";
import { describe, expect, it } from "vitest";

describe("labelOf and concernOf", () => {
    it("labels a rule by its name, falling back to its id", () => {
        expect(labelOf({ name: "max-lines", ruleId: "a" })).not.toBe("");
        expect(labelOf({ ruleId: "no-console" })).not.toBe("");
    });

    it("derives the same concern for two rules whose names differ only in word order and plural", () => {
        const one = concernOf({ name: "max-nested-callbacks", ruleId: "a" });
        const two = concernOf({ name: "nested-callback-max", ruleId: "b" });
        expect(one).toBe(two);
    });

    it("falls back to a prefixed label when the name carries no meaningful word", () => {
        expect(concernOf({ name: "E1", ruleId: "E1" }).startsWith("x:")).toBe(true);
    });
});
```
