- onboarding.cy.ts / preferences.cy.ts / recipes.cy.ts mockaient encore
GET /reference/diets|allergies avec l'ancienne forme {id, name}. Depuis
les deux derniers commits l'API renvoie {id, key} (uid anglais) et le
composant résout le libellé via i18n (t(`catalog.diets.${key}`)) — avec
key manquant, ça affichait littéralement "catalog.diets.undefined" au
lieu de "Végétarien"/"Omnivore"/etc., faisant échouer cy.select()/
cy.contains() dans ces 3 specs. Corrigé pour mocker {key: "vegetarian"},
{key: "peanuts"}, etc.
- recipes.cy.ts : le test "shows a not-found message" utilisait le
mauvais code d'erreur (4041 au lieu de ErrorCode.RECIPE_NOT_FOUND =
4045), donc RecipeDetailPanel tombait dans son état d'erreur générique
au lieu du message "Cette recette n'existe pas." — bug dans mon propre
test, sans rapport avec le refactor.
- pnpm lint (biome) : les fichiers touchés par le refactor précédent
avaient quelques soucis de formatage/tri d'imports (des sed multi-
fichiers, pas d'édition via l'outil habituel) — corrigés par
`biome check --write`.
Vérifié : ces 3 specs + recipe-form.cy.ts passent maintenant dans le job
CI GitHub Actions (Linux, Cypress s'y exécute réellement — contrairement
à cet environnement Windows sandboxé, voir les commits précédents) ; 102
tests Mocha + 32 scénarios Cucumber toujours au vert en local.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { getEnglishKey } from "../src/db/catalog-en-keys.js";
|
|
/**
|
|
* One-off validation, run by hand: checks that `catalog-en-keys.ts` has an
|
|
* entry for every diet/allergen/ingredient currently in
|
|
* `reference-seed-data.ts`, and that the resulting English keys are unique
|
|
* within each table. Not part of the app or the seed itself — just a
|
|
* pre-flight check while building/editing the dictionary by hand.
|
|
*/
|
|
import { ALLERGENS, DIETS, INGREDIENT_GROUPS } from "../src/db/reference-seed-data.js";
|
|
|
|
function check(label: string, names: string[]) {
|
|
const keys = new Map<string, string>();
|
|
const missing: string[] = [];
|
|
const duplicates: string[] = [];
|
|
for (const name of names) {
|
|
let key: string;
|
|
try {
|
|
key = getEnglishKey(name);
|
|
} catch {
|
|
missing.push(name);
|
|
continue;
|
|
}
|
|
const existing = keys.get(key);
|
|
if (existing !== undefined && existing !== name) {
|
|
duplicates.push(`"${existing}" and "${name}" both map to "${key}"`);
|
|
}
|
|
keys.set(key, name);
|
|
}
|
|
console.log(`${label}: ${names.length} names, ${keys.size} unique keys`);
|
|
if (missing.length > 0) {
|
|
console.log(` MISSING (${missing.length}):`, missing);
|
|
}
|
|
if (duplicates.length > 0) {
|
|
console.log(` DUPLICATES (${duplicates.length}):`, duplicates);
|
|
}
|
|
}
|
|
|
|
check("Diets", DIETS);
|
|
check(
|
|
"Allergens",
|
|
ALLERGENS.map((a) => a.name),
|
|
);
|
|
check(
|
|
"Ingredients",
|
|
INGREDIENT_GROUPS.flatMap((g) => g.items.map((i) => i.name)),
|
|
);
|