fix(catalog) : retours review M6 — default jsonb mort (states) + constante prefixe storage-type de test
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 49s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m23s

This commit is contained in:
Matthieu
2026-06-25 14:20:52 +02:00
parent 5dc5e703e3
commit 30e7839615
2 changed files with 8 additions and 3 deletions
+3 -1
View File
@@ -128,7 +128,9 @@ final class Version20260625110000 extends AbstractMigration
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
code VARCHAR(50) NOT NULL, code VARCHAR(50) NOT NULL,
name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL,
states JSONB DEFAULT '[]'::jsonb NOT NULL, -- Pas de DEFAULT : un tableau vide violerait chk_product_states_not_empty
-- (RG-6.02). La colonne est toujours renseignee par l'app (Processor/ORM).
states JSONB NOT NULL,
manufactured BOOLEAN DEFAULT FALSE NOT NULL, manufactured BOOLEAN DEFAULT FALSE NOT NULL,
contains_molasses BOOLEAN DEFAULT FALSE NOT NULL, contains_molasses BOOLEAN DEFAULT FALSE NOT NULL,
category_id INT NOT NULL, category_id INT NOT NULL,
@@ -27,6 +27,9 @@ final class ProductExportControllerTest extends AbstractCatalogApiTestCase
private const string XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; private const string XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
private const string EXPORT_URL = '/api/products/export.xlsx'; private const string EXPORT_URL = '/api/products/export.xlsx';
/** Prefixe des codes de types de stockage seedes par ce test (cible du cleanup tearDown). */
private const string TEST_STORAGE_PREFIX = 'TEST_';
/** /**
* Purge des produits + types de stockage de test AVANT le cleanup parent : * Purge des produits + types de stockage de test AVANT le cleanup parent :
* product reference category / site / storage_type en FK ON DELETE RESTRICT, * product reference category / site / storage_type en FK ON DELETE RESTRICT,
@@ -39,7 +42,7 @@ final class ProductExportControllerTest extends AbstractCatalogApiTestCase
$em = $this->getEm(); $em = $this->getEm();
$em->createQuery('DELETE FROM '.Product::class)->execute(); $em->createQuery('DELETE FROM '.Product::class)->execute();
$em->createQuery('DELETE FROM '.StorageType::class.' s WHERE s.code LIKE :prefix') $em->createQuery('DELETE FROM '.StorageType::class.' s WHERE s.code LIKE :prefix')
->setParameter('prefix', self::TEST_CATEGORY_TYPE_PREFIX.'%') ->setParameter('prefix', self::TEST_STORAGE_PREFIX.'%')
->execute() ->execute()
; ;
@@ -200,7 +203,7 @@ final class ProductExportControllerTest extends AbstractCatalogApiTestCase
$product->setContainsMolasses($containsMolasses); $product->setContainsMolasses($containsMolasses);
$product->setCategory($category ?? $this->createCategory()); $product->setCategory($category ?? $this->createCategory());
$product->addSite($site ?? $this->firstSite()); $product->addSite($site ?? $this->firstSite());
$product->addStorageType($storageType ?? $this->seedStorageType('TEST_'.strtoupper(substr(bin2hex(random_bytes(4)), 0, 8)))); $product->addStorageType($storageType ?? $this->seedStorageType(self::TEST_STORAGE_PREFIX.strtoupper(substr(bin2hex(random_bytes(4)), 0, 8))));
$product->setDeletedAt($deletedAt); $product->setDeletedAt($deletedAt);
$em->persist($product); $em->persist($product);