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

> 41 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-build-core-resolvers-evidence-resolver-test-ts
Source text: https://banes-lab.com/source/testing/test.build/core/resolvers/evidence.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/diagram.resolver.test.ts](https://banes-lab.com/source/testing/test.build/core/resolvers/diagram.resolver.test.ts.md) and before [test.build/core/resolvers/graph.resolver.test.ts](https://banes-lab.com/source/testing/test.build/core/resolvers/graph.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 { codeTargetRefOf, evidenceTargetOf } from "@banes-lab/build-scripts/core/resolvers/evidence.resolver.ts";
import { describe, expect, it } from "vitest";
import { fileId, folderId } from "@banes-lab/web/domain/converters/source.converter.ts";
import { ANATOMY_PREFIX } from "@banes-lab/build-scripts/configuration/constants/graph.constants.ts";
import { ANATOMY_TREES } from "@banes-lab/web/core/registries/anatomy.registry.ts";
import { COORDINATION_EVIDENCE } from "@banes-lab/web/configuration/constants/evidence.coordination.constants.ts";
import { EVIDENCE } from "@banes-lab/web/configuration/constants/evidence.source.constants.ts";
import { definitionIndexOf } from "@banes-lab/web/core/converters/definition.converter.ts";
import { unknownTargetKind } from "@banes-lab/build-scripts/configuration/strings/graph.strings.ts";

const roots = ANATOMY_TREES.map((tree) => tree.snapshot.tree);
const targetOf = evidenceTargetOf(roots, definitionIndexOf(roots), { fileId, folderId });

describe("evidenceTargetOf", () => {
    it("resolves every node the evidence registry names to one graph node", () => {
        const unresolved = EVIDENCE.flatMap((entry) => entry.nodes.filter((node) => targetOf(node) === null));
        expect(unresolved).toStrictEqual([]);
    });

    it("resolves every coordination-tree grounding, each one also in the registry", () => {
        expect(COORDINATION_EVIDENCE.length).toBeGreaterThan(0);
        expect(COORDINATION_EVIDENCE.every((entry) => EVIDENCE.includes(entry))).toBe(true);
        const unresolved = COORDINATION_EVIDENCE.flatMap((entry) =>
            entry.nodes.filter((node) => targetOf(node) === null),
        );
        expect(unresolved).toStrictEqual([]);
    });

    it("returns null for a file the trees do not hold", () => {
        expect(targetOf({ kind: "file", name: "absent-file-name.none.ts" })).toBeNull();
    });
});

describe("codeTargetRefOf", () => {
    const refOf = codeTargetRefOf(roots, { fileId, folderId });

    it("maps an exact target to its graph ref and candidates to none", () => {
        expect(refOf({ kind: "file", path: "a.ts" })).toBe(ANATOMY_PREFIX + fileId("a.ts"));
        expect(refOf({ kind: "folder", path: "core" })).toBe(ANATOMY_PREFIX + folderId("core"));
        expect(refOf({ kind: "record", ref: "lexicon:term" })).toBe("lexicon:term");
        expect(refOf({ kind: "candidates", locations: [] })).toBeNull();
        expect(refOf({ kind: "definition", location: { file: "none.ts", line: 1, name: "none" } })).toBeNull();
    });

    it("names the resolver to extend when a target kind has no mapping", () => {
        expect(unknownTargetKind("{}")).toContain("codeTargetRefOf");
    });
});
```
