test(commercial) : cover RG-1.01..1.29 except role-gated (M1) + polish stack #38
Reference in New Issue
Block a user
Delete Branch "feature/ERP-60-tests-phpunit-rg-clients"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Dernier wagon de la stack back M1. ERP-60 = polish stack + couverture de tests PHPUnit NON dépendante des rôles métier (cf. spec § 7 / § 8.1).
Phase 0 — polish stack (déjà mergé dans les branches basses via rebase)
/clients(au lieu de/commercial/clients), cohérente avec/suppliers.pagination_client_enabled: trueest déjà le défaut global →?pagination=falsemarche déjà sur/api/clients(décision P7).Phase 1 — tests (combler les trous, zéro duplication)
8 nouvelles suites couvrant les RG non encore testées par ERP-55/56/57/58 :
ClientFormulaireMainTest— RG-1.02 (téléphone secondaire, max 2).ClientAddressTest— RG-1.06/07/08 + RG-1.11 (CHECK BDD prospect/billing).ClientUniquenessTest— RG-1.15/1.17 (Q4 : SIREN/email NON uniques).ClientArchiveTest— RG-1.23 : 409 restauration en conflit (gap P1).ClientAuditTest— RG-1.27 (created* figés / updatedBy modificateur) + iban/bic présents dans le diff audité.ClientMigrationTest— index partiel uniqueuq_client_company_name_active(1 seul) ; pas d'index siren/email.ClientSecurityTest— 401 anonyme + 403 sanscommercial.clients.view.ClientPatchStrictTest— RG-1.28 (403 strict mix de groupes, fonctionnel).Cahier de test complet (mapping de TOUTES les RG → test) :
docs/specs/M1-clients/cahier-test-back-M1.md.Délégué à ERP-74 (#493)
Matrice RBAC différenciée (bureau/compta/commerciale/usine) + RG-1.04 fonctionnel — exigent les rôles métier seedés après le merge de la stack.
Gaps documentés (cahier)
Vérifs
make db-reset && make php-cs-fixer-allow-risky && make test→ 421 tests OK, 1386 assertions, 0 risky. Nouveaux tests : 17, 71 assertions.027e80cc4btoa048be1cf7Expose les sous-ressources Contacts / Adresses / RIB du repertoire clients (M1, spec § 4.5) : - 3 Processors dedies (ClientContactProcessor, ClientAddressProcessor, ClientRibProcessor) : normalisation serveur reutilisant ClientFieldNormalizer (RG-1.19 capitalize, RG-1.20 telephones chiffres, RG-1.21 emails/billingEmail lowercase) + regles metier. - Operations API Platform : - POST /api/clients/{id}/contacts|addresses, PATCH/DELETE /api/client_contacts|addresses/{id} (security commercial.clients.manage) - POST /api/clients/{id}/ribs, PATCH/DELETE /api/client_ribs/{id} (security commercial.clients.accounting.manage) - GET item par sous-ressource (lecture unitaire) ; pas de GET collection autonome (lecture via le parent, non concernee par la pagination ERP-72). - Regles de gestion : - RG-1.13 : DELETE du dernier RIB d'un client en reglement LCR -> 409. - RG-1.14 : DELETE du dernier contact d'un client -> 409 (completude front au M1). - RG-1.05 : prenom OU nom du contact obligatoire -> 422. - Validations deja portees par l'entite et desormais exercees : Assert\Count(min:1) sur ClientAddress.sites (RG-1.10), Assert\Regex code postal (RG-1.09), Assert\Iban / Assert\Bic sur ClientRib. - SiteReferenceDenormalizer : resout les IRIs /api/sites vers SiteInterface (meme pattern que CategoryReferenceDenormalizer, sans import cross-module). - Ajout de symfony/intl, requis par Assert\Bic. Tests : ClientSubResourceApiTest (13 cas) couvrant CRUD, normalisation, RG-1.13/1.14, gating 403 sur client_ribs sans accounting.manage. Suite back complete au vert (383 tests).a048be1cf7to1c0ebceaf9