Add challenge feedback API

This commit is contained in:
2026-07-21 22:29:22 +02:00
parent 5a388d3d60
commit f4fea7324a
7 changed files with 500 additions and 6 deletions
+46 -2
View File
@@ -1,7 +1,7 @@
const assert = require("assert");
const CookieCode = require("../dist/cookiecode.js");
CookieCode.configurer({ sortie: null, afficherNotions: true });
CookieCode.configurer({ sortie: "test", afficherNotions: true });
const texteRecette = CookieCode.recette("Cookie au chocolat")
.prendre("farine", 200, "g")
@@ -48,6 +48,50 @@ assert.ok(!html.includes("<img src=x"));
assert.ok(html.includes("&lt;script&gt;alert"));
assert.ok(html.includes("&lt;img src=x"));
assert.strictEqual(CookieCode.version, "0.1.0");
const recetteDefi = CookieCode.recette("Cookie defi")
.prendre("farine", 200, "g")
.prendre("sucre", 100, "g")
.prendre("chocolat", 150, "g")
.ajouter("farine")
.ajouter("sucre")
.ajouter("chocolat")
.melanger()
.repeter(2, (recette) => {
recette.melanger();
})
.cuire(12, "minutes")
.servir();
const rapport = recetteDefi.analyser();
assert.deepStrictEqual(rapport.ingredients, ["farine", "sucre", "chocolat"]);
assert.ok(rapport.actions.includes("repeter"));
assert.strictEqual(rapport.utiliseBoucle, true);
assert.strictEqual(rapport.termineParServir, true);
assert.deepStrictEqual(rapport.erreurs, []);
const defiCookie = CookieCode.defi("Cookie avec boucle", {
ingredientsMinimum: 3,
actionsObligatoires: ["melanger", "cuire", "servir"],
boucleObligatoire: true,
terminerParServir: true,
interdireErreurs: true,
});
const verification = CookieCode.verifier(recetteDefi, defiCookie);
assert.strictEqual(verification.reussi, true);
assert.match(verification.toText(), /Resultat : reussi/);
assert.match(verification.toText(), /✅ Tu as utilise 3 ingredient\(s\)\./);
const recetteIncomplete = CookieCode.recette("Cookie incomplet")
.prendre("farine", 200, "g")
.melanger();
const verificationIncomplete = CookieCode.verifier(recetteIncomplete, defiCookie);
assert.strictEqual(verificationIncomplete.reussi, false);
assert.match(verificationIncomplete.toText(), /❌ Il faut au moins 3 ingredient\(s\)\./);
assert.match(verificationIncomplete.toText(), /❌ Il manque une boucle : essaie avec \.repeter\(\)\./);
assert.match(verificationIncomplete.toText(), /❌ Ta recette doit se terminer par \.servir\(\)\./);
assert.strictEqual(CookieCode.version, "0.2.0");
console.log("CookieCode tests: OK");