Files
ttstd-infinite-canvas/web/test/skill-defaults.test.ts

33 lines
1.5 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { DEFAULT_CANVAS_AGENT_SKILL_ID, ensureDefaultCanvasAgentSkill } from "@/services/skill-defaults";
function skill(skillId: string, isAdded = true) {
return { skillId, skillName: skillId, isAdded } as never;
}
describe("ensureDefaultCanvasAgentSkill", () => {
test("keeps an already added default skill without writing", async () => {
let added = 0;
const result = await ensureDefaultCanvasAgentSkill({
listAdded: async () => ({ skills: [skill(DEFAULT_CANVAS_AGENT_SKILL_ID)] }),
get: async () => { throw new Error("must not read catalog"); },
add: async () => { added += 1; return { skill: skill(DEFAULT_CANVAS_AGENT_SKILL_ID) }; },
});
expect(result.skills[0].skillId).toBe(DEFAULT_CANVAS_AGENT_SKILL_ID);
expect(added).toBe(0);
});
test("installs the default skill once when it is not added", async () => {
let listCalls = 0;
let added = 0;
const result = await ensureDefaultCanvasAgentSkill({
listAdded: async () => ({ skills: listCalls++ === 0 ? [] : [skill(DEFAULT_CANVAS_AGENT_SKILL_ID)] }),
get: async () => ({ skill: skill(DEFAULT_CANVAS_AGENT_SKILL_ID, false) }),
add: async () => { added += 1; return { skill: skill(DEFAULT_CANVAS_AGENT_SKILL_ID) }; },
});
expect(result.skills[0].skillId).toBe(DEFAULT_CANVAS_AGENT_SKILL_ID);
expect(added).toBe(1);
expect(listCalls).toBe(2);
});
});