[ERP-48] Écrire les tests PHPUnit RG-1.01 à RG-1.17 #20
Reference in New Issue
Block a user
Delete Branch "feature/ERP-48-tests-phpunit-rg-1-01-a-1-17"
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?
Mode stacked PR — DERNIER ticket back du M0
Cible :
feature/ERP-47-declarer-module-catalog-rbac(PAS develop).Quand la MR ERP-47 sera mergée sur develop, repointer la cible de cette MR vers develop.
Résumé
Suite PHPUnit complète qui mappe chaque RG (1.01 → 1.17) de la spec M0 Catalog vers un ou plusieurs tests ciblés. 63 nouveaux tests dans 9 classes sous
tests/Module/Catalog/Api/.Cahier de test
CategoryPermissionsTest::testPersonaWithoutCatalogPermissionGets403*(4 personas × 4 verbes) +testAnonymousGets401*+testAdminGets{200,201,204}*+testUserWithViewPermissionGets200*CategoryValidationTest::testNameRequiredReturns422+testNameEmptyStringReturns422+testNameWhitespaceOnlyReturns422CategoryValidationTest::testNameIsTrimmedOnCreateCategoryValidationTest::testNameTooShortReturns422+testNameTooLongReturns422+testNameAtMaxLengthIs201CategoryValidationTest::testCategoryTypeRequiredReturns422+testCategoryTypeNullIsRejectedCategoryValidationTest::testCategoryTypeMustExistReturns4xxCategoryUniqueTest::testDuplicateNameSameTypeReturns409+testDuplicateNameCaseInsensitiveReturns409+testSameNameDifferentTypeAllowed+testRecreateAfterSoftDeleteAllowedCategoryListTest::testListExcludesSoftDeletedByDefaultCategoryListTest::testIncludeDeletedFlagSurfacesSoftDeletedCategoryListTest::testDefaultSortIsNameAscCategoryGetTest::testGetSoftDeletedReturns404+testGetSoftDeletedWithFlagReturns200+testGetNonExistentReturns404+testGetActiveCategoryReturns200CategoryDeleteTest::testDeleteReturns204AndPersistsSoftDeleteCategoryDeleteTest::testPatchCannotSetDeletedAtCategoryDeleteTest::testPatchOnSoftDeletedReturns404+testDeleteOnSoftDeletedReturns404CategoryAuditTest::testAuditLogOnCreate+testAuditLogOnUpdate+testAuditLogOnSoftDelete+testAuditLogPerformerCarriesAuthenticatedUsernameCategoryTimestampableBlamableTest::testCreatedByAdminOnPost+testCreatedByNullInConsoleContextCategoryTimestampableBlamableTest::testPatchUpdatesUpdatedFieldsOnly+testSoftDeleteAlsoUpdatesUpdatedFieldsEntitiesAreTimestampableBlamableTest::testAllBusinessEntitiesImplementBothInterfaces(déjà livré ERP-52, reste vert avecCategorydétectée Timestampable/Blamable etCategoryTypewhitelistée)Side fixes révélés par la suite
1.
Category.php—normalizer: 'trim'sur Assert\NotBlank + LengthAvant le fix, POST
{name: " "}retournait 201 au lieu de 422 : le Processor trim après validation, mais NotBlank ne fait pas de trim natif. La RG-1.02 (whitespace-only → 422) combinée à la RG-1.03 (trim serveur) exige lenormalizer: 'trim'. 1 ligne, aligne le contrat sans réordonnancer Validate/Process.2.
makefile— recréer l'index partieluq_category_name_type_activeaprèsschema:updatedoctrine:schema:update --env=test --forcedrop systématiquement l'index partieluq_category_name_type_active(l'ORM ne sait pas exprimer un index fonctionnel + partiel via attribut Doctrine, donc le voit comme orphelin). Conséquence : POST doublon(name, type)retournait 201 au lieu de 409 (laUniqueConstraintViolationne se déclenche plus). Fix :dbal:run-sql "CREATE UNIQUE INDEX IF NOT EXISTS ..."ajouté en fin detest-db-setup. Approche chirurgicale validée avec Matthieu, ne touche pas àfake_site_aware_entity(dépend de schema:update pour exister avant le purger fixtures:load).Helpers livrés
tests/Module/Catalog/Api/AbstractCatalogApiTestCase.php:createCategory(),createCategoryType()createAdminClient(),createManageClient(),createViewClient(),createPersonaClient(string \$label)(4 personas MALIO sans permission catalog)test_*Vérifications
make php-cs-fixer-allow-risky(auto-applied via pre-commit)make db-reset(index partiel restauré, vérifié\d category)make test→ 311 tests, 1071 assertions, 0 failure, 0 risky(248 existants + 63 nouveaux, dont 6 deprecations + 6 notices héritées des tests Core RBAC pré-existants — pas de régression introduite par ce ticket)
Suite
DERNIER ticket back du M0. ERP-52, ERP-43, ERP-44, ERP-45, ERP-46, ERP-47, ERP-48 sont tous en review.
Quand la MR ERP-47 sera mergée sur develop, Matthieu repointera la cible de cette MR vers develop. Tristan reviewe la stack en série.
8c3c0b58edtoc777ca057b