Files
crm_ecosplay/tests/Entity/CustomerContactTest.php
Serreau Jovann 7ae63dd996 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>
2026-04-04 11:13:33 +02:00

69 lines
2.2 KiB
PHP

<?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());
}
}