createAdminClient(); $cat = $this->createCategory('SECTEUR'); $data = $client->request('POST', '/api/clients', [ 'headers' => ['Content-Type' => self::LD], 'json' => [ 'companyName' => 'Main Form SARL', 'categories' => ['/api/categories/'.$cat->getId()], ], ])->toArray(); self::assertResponseStatusCodeSame(201); self::assertSame('MAIN FORM SARL', $data['companyName']); // Les champs de contact inline ont disparu de la representation. self::assertArrayNotHasKey('firstName', $data); self::assertArrayNotHasKey('lastName', $data); self::assertArrayNotHasKey('phonePrimary', $data); self::assertArrayNotHasKey('phoneSecondary', $data); self::assertArrayNotHasKey('email', $data); } /** * Les anciens champs de contact envoyes par un appel API direct (payload * historique) sont ignores par le denormaliseur : ils n'apparaissent pas * dans la representation et ne creent aucune colonne sur le client. */ public function testLegacyContactFieldsAreIgnored(): void { $client = $this->createAdminClient(); $cat = $this->createCategory('SECTEUR'); $data = $client->request('POST', '/api/clients', [ 'headers' => ['Content-Type' => self::LD], 'json' => [ 'companyName' => 'Legacy Fields SARL', 'firstName' => 'Ignored', 'lastName' => 'Ignored', 'phonePrimary' => '0612345678', 'phoneSecondary' => '0549001122', 'email' => 'ignored@test.fr', 'categories' => ['/api/categories/'.$cat->getId()], ], ])->toArray(); self::assertResponseStatusCodeSame(201); self::assertArrayNotHasKey('firstName', $data); self::assertArrayNotHasKey('phonePrimary', $data); self::assertArrayNotHasKey('email', $data); // Confirmation cote base : le client cree ne porte aucun contact inline // (les colonnes n'existent plus, l'entite n'a plus les proprietes). $persisted = $this->getEm()->getRepository(ClientEntity::class)->find($data['id']); self::assertNotNull($persisted); self::assertSame('LEGACY FIELDS SARL', $persisted->getCompanyName()); } }