fix(tests): corrige 3 suites Mocha DB révélées par leur 1er run sur main #17

Merged
kyuno merged 1 commit from fix/mocha-db-suites-first-run into main 2026-08-29 12:02:07 +02:00
Owner

Après le merge des features cooking / admin / hors-catalogue (#11 / #15 / #16), pnpm --filter api test sur main avait 3 échecs. Toutes les suites concernées avaient été écrites pendant le dev mais jamais exécutées (pas de Postgres dans ces sessions) — ce sont des bugs dans les tests, le code mergé est correct.

Corrections

apps/api/test/reference.test.ts

GET /reference/ingredients renvoie désormais isPlaceholder (toujours false) et displayName (toujours null) depuis la PR #16 (champs non-optionnels de IngredientView). L'assertion to.have.keys([...]) exacte est mise à jour. Le doc de IngredientView ("never returned by GET /reference/ingredients") parle des lignes placeholder, pas des champs.

apps/api/test/cooking-session.test.ts — "pools an identical prep step…"

La fixture avait 2 recettes symétriques (chop onionsimmer). Après mise en commun du hachage en merged-prep, il ne reste qu'un simmer par recette → les deux tournent dans l'unique phase de cuisson, donc aucune phase ultérieure où un background pourrait apparaître. L'optimiseur est correct (cf. le test pur "does not surface a single recipe's own passive cook…"). « Tarte » reçoit une étape active mix supplémentaire : sa cuisson simmer démarre pendant que « Soupe » est en hold, donc le simmer de Soupe flotte bien en background. Les assertions merged-prep (oignon, quantité 5, 2 recettes) restent inchangées.

apps/api/test/admin-tech-steps.test.ts — "returns 409 RETRAIN_ALREADY_RUNNING"

Une requête supertest ne part qu'à l'await / .then (superagent 10, lazy). La 1ʳᵉ requête /retrain concurrente n'était donc jamais lancée avant l'assertion, le verrou process retrainInProgress n'était jamais tenu, et la 2ᵉ recevait 200 au lieu de 409. Ajout d'un .then(res => res, err => err) pour la déclencher avant l'attente de 100 ms (conforme à noFloatingPromises).

Vérification

  • tsc --noEmit (apps/api) : OK
  • biome check sur les 3 fichiers : propre
  • ⚠️ Suites DB non ré-exécutées ici (ni Postgres ni Docker dans la session) — à confirmer avec pnpm --filter api test.

🤖 Generated with Claude Code

Après le merge des features cooking / admin / hors-catalogue (#11 / #15 / #16), `pnpm --filter api test` sur `main` avait **3 échecs**. Toutes les suites concernées avaient été écrites pendant le dev mais **jamais exécutées** (pas de Postgres dans ces sessions) — ce sont des bugs dans les tests, le code mergé est correct. ## Corrections ### `apps/api/test/reference.test.ts` `GET /reference/ingredients` renvoie désormais `isPlaceholder` (toujours `false`) et `displayName` (toujours `null`) depuis la PR #16 (champs non-optionnels de `IngredientView`). L'assertion `to.have.keys([...])` exacte est mise à jour. Le doc de `IngredientView` ("never returned by `GET /reference/ingredients`") parle des *lignes* placeholder, pas des champs. ### `apps/api/test/cooking-session.test.ts` — "pools an identical prep step…" La fixture avait 2 recettes symétriques (`chop onion` → `simmer`). Après mise en commun du hachage en `merged-prep`, il ne reste qu'un `simmer` par recette → les deux tournent dans l'unique phase de cuisson, donc aucune phase ultérieure où un `background` pourrait apparaître. L'optimiseur est correct (cf. le test pur *"does not surface a single recipe's own passive cook…"*). « Tarte » reçoit une étape active `mix` supplémentaire : sa cuisson `simmer` démarre pendant que « Soupe » est en `hold`, donc le simmer de Soupe flotte bien en `background`. Les assertions `merged-prep` (oignon, quantité 5, 2 recettes) restent inchangées. ### `apps/api/test/admin-tech-steps.test.ts` — "returns 409 RETRAIN_ALREADY_RUNNING" Une requête supertest ne part qu'à l'`await` / `.then` (superagent 10, lazy). La 1ʳᵉ requête `/retrain` concurrente n'était donc jamais lancée avant l'assertion, le verrou process `retrainInProgress` n'était jamais tenu, et la 2ᵉ recevait `200` au lieu de `409`. Ajout d'un `.then(res => res, err => err)` pour la déclencher avant l'attente de 100 ms (conforme à `noFloatingPromises`). ## Vérification - `tsc --noEmit` (apps/api) : OK - `biome check` sur les 3 fichiers : propre - ⚠️ Suites DB **non ré-exécutées** ici (ni Postgres ni Docker dans la session) — à confirmer avec `pnpm --filter api test`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-08-29 12:01:11 +02:00
fix(tests): corrige 3 suites Mocha DB revelees par leur 1er run sur main
Some checks failed
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / intent-service-test (push) Has been cancelled
CI / build (push) Has been cancelled
9532ea4e83
Ces suites ont ete ecrites pendant le dev des features cooking / admin /
hors-catalogue mais jamais executees (pas de Postgres dans ces sessions).
Leur 1re execution reelle sur `main` echouait — bugs dans les tests, pas
dans le code merge.

- reference.test.ts : `GET /reference/ingredients` renvoie desormais
  `isPlaceholder` (toujours false) et `displayName` (toujours null) depuis
  la PR #16 (champs de `IngredientView`). L'assertion `to.have.keys([...])`
  exacte est mise a jour.
- cooking-session.test.ts : la fixture "pooling merged-prep" avait 2
  recettes symetriques (chop -> simmer) ; apres mise en commun du chop les
  deux simmer tournent dans l'unique phase de cuisson, donc aucun
  `background` possible (l'optimiseur est correct, cf. le test pur
  equivalent). « Tarte » recoit une etape active `mix` de plus pour que son
  simmer flotte en background pendant que « Soupe » est en hold.
- admin-tech-steps.test.ts : une requete supertest ne part qu'a l'`await`/
  `.then` ; la 1re requete /retrain concurrente n'etait jamais lancee, donc
  le verrou process n'etait jamais tenu et la 2e recevait 200 au lieu de
  409. Ajout d'un `.then(res => res, err => err)` pour la declencher avant
  l'attente de 100 ms.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno merged commit 927051793c into main 2026-08-29 12:02:07 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: kyuno/batchCooking#17
No description provided.