feat: entité CustomerContact pour contacts additionnels d'un client
Entity CustomerContact : - customer (ManyToOne, CASCADE) : client parent - firstName, lastName : nom/prénom du contact - email : adresse email (nullable) - phone : téléphone (nullable) - role : fonction dans l'entreprise (Gérant, Comptable, etc.) - isBillingEmail : si true, reçoit les factures par email - createdAt / updatedAt : timestamps - getFullName() : prénom + nom CustomerContactTest (2 tests, 19 assertions) : - testConstructor : valeurs par défaut - testSetters : tous les setters/getters Migration : CREATE TABLE customer_contact avec FK customer ON DELETE CASCADE Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
68
tests/Entity/CustomerContactTest.php
Normal file
68
tests/Entity/CustomerContactTest.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Tests\Entity;
|
||||
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\CustomerContact;
|
||||
use App\Entity\User;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class CustomerContactTest extends TestCase
|
||||
{
|
||||
private function createCustomer(): Customer
|
||||
{
|
||||
$user = new User();
|
||||
$user->setEmail('c@t.com');
|
||||
$user->setFirstName('C');
|
||||
$user->setLastName('T');
|
||||
$user->setPassword('h');
|
||||
|
||||
return new Customer($user);
|
||||
}
|
||||
|
||||
public function testConstructor(): void
|
||||
{
|
||||
$customer = $this->createCustomer();
|
||||
$contact = new CustomerContact($customer, 'Jean', 'Dupont');
|
||||
|
||||
$this->assertNull($contact->getId());
|
||||
$this->assertSame($customer, $contact->getCustomer());
|
||||
$this->assertSame('Jean', $contact->getFirstName());
|
||||
$this->assertSame('Dupont', $contact->getLastName());
|
||||
$this->assertSame('Jean Dupont', $contact->getFullName());
|
||||
$this->assertNull($contact->getEmail());
|
||||
$this->assertNull($contact->getPhone());
|
||||
$this->assertNull($contact->getRole());
|
||||
$this->assertFalse($contact->isBillingEmail());
|
||||
$this->assertInstanceOf(\DateTimeImmutable::class, $contact->getCreatedAt());
|
||||
$this->assertNull($contact->getUpdatedAt());
|
||||
}
|
||||
|
||||
public function testSetters(): void
|
||||
{
|
||||
$contact = new CustomerContact($this->createCustomer(), 'A', 'B');
|
||||
|
||||
$contact->setFirstName('Marie');
|
||||
$this->assertSame('Marie', $contact->getFirstName());
|
||||
|
||||
$contact->setLastName('Martin');
|
||||
$this->assertSame('Martin', $contact->getLastName());
|
||||
$this->assertSame('Marie Martin', $contact->getFullName());
|
||||
|
||||
$contact->setEmail('marie@entreprise.fr');
|
||||
$this->assertSame('marie@entreprise.fr', $contact->getEmail());
|
||||
|
||||
$contact->setPhone('0612345678');
|
||||
$this->assertSame('0612345678', $contact->getPhone());
|
||||
|
||||
$contact->setRole('Comptable');
|
||||
$this->assertSame('Comptable', $contact->getRole());
|
||||
|
||||
$contact->setIsBillingEmail(true);
|
||||
$this->assertTrue($contact->isBillingEmail());
|
||||
|
||||
$now = new \DateTimeImmutable();
|
||||
$contact->setUpdatedAt($now);
|
||||
$this->assertSame($now, $contact->getUpdatedAt());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user