feat(catalog) : M6 — Catalogue produits (ERP-197 → ERP-203) #154
Reference in New Issue
Block a user
Delete Branch "feat/erp-203-tests-product-rg"
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?
Module M6 — Catalogue produits (ERP-197 → ERP-203), pile consolidée en une seule MR vers
developpour un CI unique.Contenu (commits) :
catalog.products.*+ sidebar + 3 miroirs RBACRemplace et clôt les MR #148, #149, #150, #151, #152, #153 (commits intégralement inclus ici).
Review back — ERP-203 (tests PHPUnit RG + contrat JSON), read-only.
Périmètre : 17 tests couvrant RG-6.01→6.06 + RBAC + contrat de sérialisation, spec-back.md.
Vérifié conforme :
falsehors SALE), RG-6.05 (catégorie PRODUIT → 422), RG-6.06 (storageTypes ⊆ sites → 422), matrice RBAC (Admin OK / autres 403).ProductSerializationContractTestasserte sur le corps JSON réel (member/totalItemssans préfixehydra:,categoryobjet embarqué) — DoD § 4.0.bis.isContainsMolasses()(convention serializer) + correctif helper d'auth (authView).OK (116 tests, 459 assertions)sur tout le module Catalog.⚠️ Note hors périmètre M6 : la suite globale
make testprésente une instabilité pré-existante (violations FKprovider_categorynon déterministes sur des modules antérieurs M2-M5, sans isolation transactionnelle). Reproduite sans aucun code Catalog (module Technique seul, BDD fraîche : 6 puis 5 failures sur deux exécutions identiques). À traiter séparément — piste :DAMADoctrineTestBundlepour isoler chaque test dans une transaction rollback.Verdict : ✅ MR finie, tests verts en isolation.
Review M6 « Produit » — relecture croisée (couche données + couche application) sur le diff cumulé
develop…HEAD.Verdict : 0 bloquant, 0 important.
Assert\*en FR.priority:1+#[IsGranted('catalog.products.view')], mêmes filtres que la liste — conforme.Nits relevés (non bloquants) :
product.states:DEFAULT '[]'::jsonbcontredisait leCHECK (jsonb_array_length(states) >= 1)(default mort, jamais atteignable) → corrigé (commit30e7839).ProductExportControllerTest: letearDownréutilisait la constante des category-types (TEST_CATEGORY_TYPE_PREFIX) pour purger des storage-types → constante dédiéeTEST_STORAGE_PREFIX(commit30e7839).Site(cross-module) du controller utilisé seulement dans un commentaire@var; DQLp.id != :idau lieu de<>: cosmétiques, laissés tels quels.?pagination=falserenvoyant unarray: conforme (pattern établiClientProvider/SupplierProvider, échappatoire documentée pour alimenter les selects).test(catalog) : ERP-203 — tests PHPUnit RG-6.01→6.10 + capture du contrat JSON produitto feat(catalog) : M6 — Catalogue produits (ERP-197 → ERP-203)