test(logistique) : tests PHPUnit RG-5.01→5.10 + capture contrat JSON (ERP-187) #137

Merged
matthieu merged 5 commits from feat/erp-187-tests-tickets-pesee into develop 2026-06-18 13:33:40 +00:00
Owner

ERP-187 (1.7) — Tests PHPUnit RG-5.01→5.10 + capture contrat JSON

Couvre les règles de gestion du M5 (tickets de pesée) par des tests PHPUnit et capture la réponse JSON réelle (DoD § 4.0.bis) collée dans spec-back.md avant les écrans front.

Tests unitaires (Processor / Normalizer / Callback — sans BDD ni HTTP)

  • NetWeightTest (RG-5.05) : net = plein − vide, null si une pesée manque, recalcul au PATCH.
  • CounterpartyValidationTest (RG-5.03) : présence du champ requis par branche (propertyPath client/supplier/otherLabel) + exclusivité (null-ification hors-branche).
  • ImmatriculationNormalizationTest (RG-5.01/5.10) : masque XX-000-XX, « Tout format », mapping 422 sur immatriculation.

Tests fonctionnels (API réelle)

  • WeighingTicketNumberingTest (RG-5.02/5.09) : format {siteCode}-TP-{NNNN}, séquence par site, isolation inter-sites, immuabilité numéro/site au PATCH.
  • WeighingTicketSerializationContractTest (DoD § 4.0.bis) : 4 pièges verts (client embarqué, plateFreeFormat présent, number formaté, netWeight = full − empty) + dump JSON via WEIGHING_TICKET_DOD_DUMP.
  • WeighingTicketRBACMatrixTest (§ 5.2) : admin/bureau/usine OK, compta/commerciale 403, anonyme 401.

DSD / stub pont bascule / endpoint pesée déjà couverts (ERP-184/185).

DoD

  • spec-back.md § 4.0.bis : JSON réel (liste + détail) collé, 4 pièges marqués — feu vert front.

Vérifications

  • make test complet vert : 848 tests, 6302 assertions (0 échec ; deprecations/notices PHPUnit seuls).
  • make php-cs-fixer-allow-risky : 0 correction.

Empilée sur ERP-186 (stack M5).

## ERP-187 (1.7) — Tests PHPUnit RG-5.01→5.10 + capture contrat JSON Couvre les règles de gestion du M5 (tickets de pesée) par des tests PHPUnit et capture la **réponse JSON réelle** (DoD § 4.0.bis) collée dans `spec-back.md` avant les écrans front. ### Tests unitaires (Processor / Normalizer / Callback — sans BDD ni HTTP) - **NetWeightTest** (RG-5.05) : net = plein − vide, `null` si une pesée manque, recalcul au PATCH. - **CounterpartyValidationTest** (RG-5.03) : présence du champ requis par branche (propertyPath `client`/`supplier`/`otherLabel`) + exclusivité (null-ification hors-branche). - **ImmatriculationNormalizationTest** (RG-5.01/5.10) : masque `XX-000-XX`, « Tout format », mapping 422 sur `immatriculation`. ### Tests fonctionnels (API réelle) - **WeighingTicketNumberingTest** (RG-5.02/5.09) : format `{siteCode}-TP-{NNNN}`, séquence par site, isolation inter-sites, immuabilité numéro/site au PATCH. - **WeighingTicketSerializationContractTest** (DoD § 4.0.bis) : 4 pièges verts (client embarqué, `plateFreeFormat` présent, `number` formaté, `netWeight` = full − empty) + dump JSON via `WEIGHING_TICKET_DOD_DUMP`. - **WeighingTicketRBACMatrixTest** (§ 5.2) : admin/bureau/usine OK, compta/commerciale 403, anonyme 401. > DSD / stub pont bascule / endpoint pesée déjà couverts (ERP-184/185). ### DoD - `spec-back.md § 4.0.bis` : **JSON réel** (liste + détail) collé, 4 pièges marqués ✅ — feu vert front. ### Vérifications - `make test` complet **vert** : 848 tests, 6302 assertions (0 échec ; deprecations/notices PHPUnit seuls). - `make php-cs-fixer-allow-risky` : 0 correction. Empilée sur ERP-186 (stack M5).
matthieu added the backM5-Ticket-peseetype/test labels 2026-06-18 10:02:40 +00:00
matthieu changed target branch from feat/erp-186-export-xlsx-tickets-pesee to develop 2026-06-18 12:47:13 +00:00
matthieu added 3 commits 2026-06-18 12:47:13 +00:00
Endpoint GET /api/weighing_tickets/export.xlsx — controller custom (priority: 1)
calque sur les exports M2/M3/M4, delegue la generation au SpreadsheetExporter
partage. Rejoue la selection du WeighingTicketProvider (recherche ?search, tri
?order[displayDate], cloisonnement par site courant) SANS pagination : export
complet de la liste (§ 4.5).

Colonnes : Numero, Type contrepartie, Contrepartie (nom Client/Fournisseur/
Autre), Date, Immatriculation, Poids vide, Poids plein, Poids net, DSD vide,
DSD plein. Securite logistique.weighing_tickets.view.

Tests fonctionnels : 200 + en-tetes/Content-Disposition, mapping des colonnes
avec net = plein - vide (RG-5.05), cloisonnement par site (non-admin), 403, 401.
Couverture des règles de gestion du M5 (tickets de pesée) et capture de la
réponse JSON réelle (DoD § 4.0.bis) avant les écrans front.

Tests unitaires (Processor/Normalizer/Callback, sans BDD ni HTTP) :
- NetWeightTest (RG-5.05) : net = plein − vide, null si pesée manquante, recalcul PATCH.
- CounterpartyValidationTest (RG-5.03) : présence par branche (propertyPath) + exclusivité.
- ImmatriculationNormalizationTest (RG-5.01/5.10) : masque XX-000-XX, « Tout format », 422.

Tests fonctionnels (API réelle) :
- WeighingTicketNumberingTest (RG-5.02/5.09) : format {siteCode}-TP-{NNNN}, séquence
  par site, isolation inter-sites, immuabilité numéro/site au PATCH.
- WeighingTicketSerializationContractTest (DoD § 4.0.bis) : 4 pièges (client embarqué,
  plateFreeFormat présent, number formaté, netWeight = full − empty) + dump JSON.
- WeighingTicketRBACMatrixTest (§ 5.2) : admin/bureau/usine OK, compta/commerciale 403,
  anonyme 401.

DSD/stub/reading déjà couverts (ERP-184/185). spec-back.md § 4.0.bis : JSON réel collé.
- WeighingTicketSerializationContractTest : couvre la branche FOURNISSEUR (supplier embarque, client null) en plus de CLIENT (piege #1 symetrique, spec § 4.0.bis).
- AbstractWeighingTicketApiTestCase : helpers seedTestSupplier + payload FOURNISSEUR + purge supplier au tearDown.
- WeighbridgeReadingApiTest : les 422 (mode invalide / poids manquant) verifient desormais le propertyPath (garde-fou ERP-101), pas seulement le code HTTP.
- NetWeightTest : docbloc isNew/contains() clarifie.
matthieu added 1 commit 2026-06-18 12:48:12 +00:00
Merge branch 'develop' into feat/erp-187-tests-tickets-pesee
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Has been cancelled
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Has been cancelled
802a1592fa
matthieu added 1 commit 2026-06-18 12:51:43 +00:00
Merge branch 'develop' into feat/erp-187-tests-tickets-pesee
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 56s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m37s
954da07f8d
matthieu added 1 commit 2026-06-18 13:10:29 +00:00
style(logistique) : @var phpdoc -> commentaire ligne dans WeighingTicketProvider (cs-fixer 3.94.2)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m13s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m50s
644f91ef9d
Le gate CI Backend (php-cs-fixer 3.94.2) convertit le /** @var list<WeighingTicket> $tickets */
place devant un return (et non une affectation) en commentaire // @var. Aligne le fichier
sur la version de cs-fixer portee par develop apres rebase de la stack M5. Inerte a l'execution.
matthieu merged commit 36e947fd8e into develop 2026-06-18 13:33:40 +00:00
matthieu deleted branch feat/erp-187-tests-tickets-pesee 2026-06-18 13:33:40 +00:00
Sign in to join this conversation.