feat: improve app ui and project metadata
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import type { SkillView } from "@/lib/api/types";
|
||||
import { groupByScope, scopeLabel, tierLabel } from "./skills";
|
||||
import { groupByScope, scopeLabel, summarizeSkills, tierLabel } from "./skills";
|
||||
|
||||
const skill = (over: Partial<SkillView>): SkillView => ({
|
||||
name: "x",
|
||||
@@ -36,3 +36,61 @@ describe("groupByScope", () => {
|
||||
expect(groupByScope(undefined)).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("summarizeSkills", () => {
|
||||
it("counts scopes, tiers, readonly skills and unique tables", () => {
|
||||
const summary = summarizeSkills([
|
||||
skill({
|
||||
name: "a",
|
||||
scope: "builtin",
|
||||
tier: "analyst",
|
||||
reads: ["projects", "outline"],
|
||||
writes: [],
|
||||
}),
|
||||
skill({
|
||||
name: "b",
|
||||
scope: "custom",
|
||||
tier: "writer",
|
||||
reads: ["projects"],
|
||||
writes: ["chapters"],
|
||||
}),
|
||||
skill({
|
||||
name: "c",
|
||||
scope: "builtin",
|
||||
tier: "analyst",
|
||||
reads: ["world_entities"],
|
||||
writes: ["outline", "chapters"],
|
||||
}),
|
||||
]);
|
||||
|
||||
expect(summary.total).toBe(3);
|
||||
expect(summary.readonlyCount).toBe(1);
|
||||
expect(summary.writableCount).toBe(2);
|
||||
expect(summary.scopes).toEqual([
|
||||
{ key: "builtin", count: 2 },
|
||||
{ key: "custom", count: 1 },
|
||||
]);
|
||||
expect(summary.tiers).toEqual([
|
||||
{ key: "analyst", count: 2 },
|
||||
{ key: "writer", count: 1 },
|
||||
]);
|
||||
expect(summary.readableTables).toEqual([
|
||||
"outline",
|
||||
"projects",
|
||||
"world_entities",
|
||||
]);
|
||||
expect(summary.writableTables).toEqual(["chapters", "outline"]);
|
||||
});
|
||||
|
||||
it("handles undefined", () => {
|
||||
expect(summarizeSkills(undefined)).toEqual({
|
||||
total: 0,
|
||||
readonlyCount: 0,
|
||||
writableCount: 0,
|
||||
scopes: [],
|
||||
tiers: [],
|
||||
readableTables: [],
|
||||
writableTables: [],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user