import { describe, expect, it } from "vitest"; import { todoWriteTool } from "./todowrite"; const run = (todos: unknown) => todoWriteTool.execute({ todos }, { cwd: "/" }); describe("TodoWrite", () => { it("affiche la liste avec les symboles et le décompte", async () => { const out = await run([ { content: "Lire le code", status: "completed" }, { content: "Implémenter", status: "in_progress", activeForm: "Implémentation du lot 3" }, { content: "Écrire les tests", status: "pending" }, ]); expect(out.split("\n").slice(0, 4)).toEqual([ "Liste de tâches mise à jour (1/3 terminée(s)) :", "☑ Lire le code", "▶ Implémentation du lot 3", "☐ Écrire les tests", ]); }); it("liste vide : vidée", async () => { expect(await run([])).toBe("Liste de tâches vidée."); }); it("avertit si plusieurs tâches sont en cours", async () => { const out = await run([ { content: "A", status: "in_progress" }, { content: "B", status: "in_progress" }, ]); expect(out).toContain("2 tâches sont « in_progress »"); }); it("valide l'entrée", async () => { await expect(todoWriteTool.execute({}, { cwd: "/" })).rejects.toThrow("tableau attendu"); await expect(run([{ content: "", status: "pending" }])).rejects.toThrow("todos[0]"); await expect(run([{ content: "A", status: "fait" }])).rejects.toThrow("status"); await expect(run(["A"])).rejects.toThrow("objet attendu"); }); });