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