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).
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).