33 lines
1.5 KiB
TypeScript
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);
|
|
});
|
|
});
|