# test.build/core/resolvers/rule.resolver.test.ts

> 34 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-build-core-resolvers-rule-resolver-test-ts
Source text: https://banes-lab.com/source/testing/test.build/core/resolvers/rule.resolver.test.ts.txt

Listed in [test.build/core/resolvers](https://banes-lab.com/api/source/testing/test.build/core/resolvers.md), after [test.build/core/resolvers/route.resolver.test.ts](https://banes-lab.com/source/testing/test.build/core/resolvers/route.resolver.test.ts.md).

## Contained in

- [test.build/core/resolvers](https://banes-lab.com/anatomy/testing/folder-testing-test-build-core-resolvers.md)

## Source

```typescript
import { catalogRuleRecord, ruleRecordsOf } from "@banes-lab/build-scripts/core/resolvers/rule.resolver.ts";
import { describe, expect, it } from "vitest";

const TRANSIT = "architecture:encryption-in-transit";
const ACCESS = "architecture:access-control";

describe("ruleRecordsOf", () => {
    it("resolves a rule id to the one site record its canonical concepts declare", () => {
        const resolved = ruleRecordsOf(
            [
                { canonical: ["encryption-in-transit"], ruleId: "tls/only" },
                { canonical: ["encryption-in-transit", "access-control"], ruleId: "mixed/rule" },
                { ruleId: "bare/rule" },
            ],
            new Set([TRANSIT, ACCESS]),
        );
        expect(resolved.get("tls/only")).toBe(TRANSIT);
        expect(resolved.has("mixed/rule")).toBe(false);
        expect(resolved.has("bare/rule")).toBe(false);
    });

    it("merges the concepts every tool declares for one rule id", () => {
        const resolved = ruleRecordsOf(
            [
                { canonical: ["encryption-in-transit"], ruleId: "shared" },
                { canonical: ["access-control"], ruleId: "shared" },
            ],
            new Set([TRANSIT, ACCESS]),
        );
        expect(resolved.has("shared")).toBe(false);
    });
});

describe("catalogRuleRecord", () => {
    it("answers no record for a rule id when the site holds none of its records", () => {
        expect(catalogRuleRecord(new Set())("no-var")).toBeNull();
    });
});
```
