422 (Assert\Count(min: 1)) sur le champ `states` ; * - valeur hors enum -> 422 (Assert\Choice) sur le champ `states` ; * - un seul etat valide -> 201 (borne basse acceptee) ; * - PATCH vers un tableau d'etats vide -> 422 (RG-7.08). * * @internal */ final class StorageStatesValidationTest extends AbstractStorageApiTestCase { public function testEmptyStatesIsRejected(): void { $client = $this->createAdminClient(); $response = $client->request('POST', '/api/storages', [ 'headers' => ['Content-Type' => self::LD], 'json' => $this->validStoragePayload(['states' => []]), ]); self::assertResponseStatusCodeSame(422); self::assertContains('states', $this->violationPaths($response)); } public function testUnknownStateValueIsRejected(): void { $client = $this->createAdminClient(); $response = $client->request('POST', '/api/storages', [ 'headers' => ['Content-Type' => self::LD], 'json' => $this->validStoragePayload(['states' => [Storage::STATE_RECEPTION, 'FOOBAR']]), ]); self::assertResponseStatusCodeSame(422); self::assertContains('states', $this->violationPaths($response)); } public function testSingleValidStateIsAccepted(): void { $client = $this->createAdminClient(); $client->request('POST', '/api/storages', [ 'headers' => ['Content-Type' => self::LD], 'json' => $this->validStoragePayload(['states' => [Storage::STATE_PRODUCTION]]), ]); self::assertResponseStatusCodeSame(201); } public function testPatchToEmptyStatesIsRejected(): void { $storage = $this->seedStorageEntity(); // RG-7.08 : la regle RG-7.04 vaut aussi en edition. $client = $this->createAdminClient(); $response = $client->request('PATCH', '/api/storages/'.$storage->getId(), [ 'headers' => ['Content-Type' => self::MERGE], 'json' => ['states' => []], ]); self::assertResponseStatusCodeSame(422); self::assertContains('states', $this->violationPaths($response)); } }