Commit Graph

4 Commits

Author SHA1 Message Date
tristan 091ccb6f28 test(catalog) : cover useCategoriesAdmin and useCategoryForm composables
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m50s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 59s
Adds 42 Vitest unit tests for the two composables extracted from the
admin categories page in ERP-50.

- useCategoriesAdmin (14 tests): fetchAll/fetchTypes, includeDeleted toggle,
  loading flags, error handling, reset, singleton sharing.
- useCategoryForm (28 tests): validation rules RG-1.02/1.04/1.05, trim,
  POST/PATCH/DELETE wiring, 409 (RG-1.07) and 422 violation mapping,
  isDirty, loadFrom, reset, instance isolation.

Mocks useApi/useI18n/useToast via vi.stubGlobal and ~/shared/stores/auth
to keep the suite hermetic (no backend required).
2026-05-29 09:53:14 +02:00
tristan 9a21384fb6 refactor(catalog) : extract page logic into useCategoriesAdmin and useCategoryForm composables
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m16s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 10s
Extrait la logique fetch/CRUD inline de la page categories (ERP-49) vers
deux composables dedies, conformement au pattern Starseed :

- useCategoriesAdmin : singleton state (categories + types + loading +
  error). Pre-chargement des types au mount de la page (au lieu du
  fetch par ouverture du drawer). Reset au logout via
  onAuthSessionCleared + appel explicite dans logout.vue.

- useCategoryForm : state local par form (pas singleton). Valide
  cote client en miroir des RG back (RG-1.02 / RG-1.04 / RG-1.05),
  mappe les erreurs 409 (doublon RG-1.07) et 422 (violations API
  Platform) sur les bons champs. submitCreate / submitUpdate /
  submitDelete renvoient la ressource ou null pour decoupler la
  decision de fermeture du drawer.

La page et le drawer deviennent purement presentationnels. Aucune
regression UX : meme validations, memes toasts, meme pattern
view -> edit du drawer (via isDirty expose par useCategoryForm).
2026-05-29 08:29:12 +02:00
tristan 934a12b28e fix(category): update category modal to MalioModal component
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m27s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Failing after 11s
2026-05-29 08:12:03 +02:00
tristan 4046910a9d feat(catalog) : add admin categories page with MalioDataTable and drawer (first draft)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 1m29s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m5s
- Page Nuxt /admin/categories : MalioDataTable + bouton Ajouter
- CategoryDrawer : modes creation / consultation / edition (transition
  auto view -> edit a la 1re modif), validation client RG-1.02/04/05,
  mapping erreurs server 409 (doublon) et 422 (violations)
- CategoryDeleteModal : confirmation suppression (soft delete cote API)
- Types Category, CategoryType, User
- i18n admin.categories.* (titre, table, form, validation, toasts)
- Fix latent : ajout 'categories' a AdminLinkSlug e2e (oubli ERP-47)

Logique fetch inline volontaire au M0 — extraction en composables a
ERP-50 (ticket 0.8). Aucune persistance d'etat de tableau dans l'URL.
2026-05-28 15:11:45 +02:00