createAdminClient(); $cat = $this->createCategory('SECTEUR'); $data = $client->request('POST', '/api/clients', [ 'headers' => ['Content-Type' => self::LD], 'json' => [ 'companyName' => 'Two Phones SARL', 'firstName' => 'A', 'phonePrimary' => '06.12.34.56.78', 'phoneSecondary' => '05 49 00 11 22', 'email' => 'twophones@test.fr', 'categories' => ['/api/categories/'.$cat->getId()], ], ])->toArray(); self::assertResponseStatusCodeSame(201); self::assertSame('0612345678', $data['phonePrimary']); self::assertSame('0549001122', $data['phoneSecondary']); } /** * RG-1.02 : maximum 2 telephones — le modele n'expose que phonePrimary et * phoneSecondary. Un eventuel 3e champ envoye par un appel API direct est * ignore (aucune 3e colonne), il ne peut donc pas creer un troisieme numero. */ public function testThirdPhoneFieldIsIgnored(): void { $client = $this->createAdminClient(); $cat = $this->createCategory('SECTEUR'); $data = $client->request('POST', '/api/clients', [ 'headers' => ['Content-Type' => self::LD], 'json' => [ 'companyName' => 'Third Phone SARL', 'firstName' => 'A', 'phonePrimary' => '0612345678', 'phoneSecondary' => '0549001122', 'phoneTertiary' => '0700000000', 'email' => 'thirdphone@test.fr', 'categories' => ['/api/categories/'.$cat->getId()], ], ])->toArray(); self::assertResponseStatusCodeSame(201); // Le champ inconnu est ignore par le denormaliseur : il n'apparait pas // dans la representation et n'a pas ete persiste. self::assertArrayNotHasKey('phoneTertiary', $data); // Confirmation cote base : seules les 2 colonnes telephone existent. $persisted = $this->getEm()->getRepository(ClientEntity::class)->find($data['id']); self::assertNotNull($persisted); self::assertSame('0612345678', $persisted->getPhonePrimary()); self::assertSame('0549001122', $persisted->getPhoneSecondary()); } }