test.build/core/converters/snapshot.converter.test.ts
test.build/core/converters/snapshot.converter.test.ts is a file in Codebase Testing. 41 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import type { AnatomyFolder } from "@banes-lab/web/types/anatomy.types.ts";
import { convert } from "./anatomy.fixture.ts";
import { qualifiedSnapshot } from "@banes-lab/build-scripts/core/converters/snapshot.converter.ts";
const MARK = "build~";
const qualify = function qualify(path: string): string {
return MARK + path;
};
const pathsOf = function pathsOf(folder: AnatomyFolder): readonly string[] {
return [
folder.id,
folder.path,
...folder.findings.map((finding) => finding.file),
...folder.files.flatMap((file) => [
file.id,
file.path,
...file.findings.map((finding) => finding.file),
...file.definitions.flatMap((definition) => [
definition.id,
definition.file,
...[...definition.callees, ...definition.callers].flatMap((ref) => [ref.id, ref.file]),
]),
]),
...folder.folders.flatMap(pathsOf),
];
};
describe("qualifiedSnapshot", () => {
it("qualifies every path the snapshot carries and keeps everything else", () => {
const snapshot = convert();
const qualified = qualifiedSnapshot(snapshot, qualify);
const paths = [
...pathsOf(qualified.tree),
...qualified.findings.map((finding) => finding.file),
...qualified.imports.flatMap((edge) => [edge.from, edge.to]),
];
expect(paths.length).toBeGreaterThan(0);
expect(paths.filter((path) => !path.startsWith(MARK))).toStrictEqual([]);
expect(pathsOf(qualified.tree)).toHaveLength(pathsOf(snapshot.tree).length);
expect(qualified.metrics).toStrictEqual(snapshot.metrics);
});
});