Files
e-ticket/tests/Entity/UserTest.php
Serreau Jovann dc3d464b17 Add PHPUnit tests with coverage for all src classes
- 21 test files covering controllers, services, entities, enums, messages
- CI: add test job with Xdebug coverage (clover + text)
- SonarQube: configure coverage report path and test sources

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 22:50:23 +01:00

67 lines
1.7 KiB
PHP

<?php
namespace App\Tests\Entity;
use App\Entity\User;
use PHPUnit\Framework\TestCase;
class UserTest extends TestCase
{
public function testNewUserHasCreatedAt(): void
{
$user = new User();
self::assertInstanceOf(\DateTimeImmutable::class, $user->getCreatedAt());
}
public function testGetRolesAlwaysIncludesRoleUser(): void
{
$user = new User();
self::assertContains('ROLE_USER', $user->getRoles());
}
public function testSetRolesDeduplicatesRoleUser(): void
{
$user = new User();
$user->setRoles(['ROLE_ADMIN', 'ROLE_USER']);
$roles = $user->getRoles();
self::assertCount(2, $roles);
self::assertContains('ROLE_ADMIN', $roles);
self::assertContains('ROLE_USER', $roles);
}
public function testGetUserIdentifierReturnsEmail(): void
{
$user = new User();
$user->setEmail('test@example.com');
self::assertSame('test@example.com', $user->getUserIdentifier());
}
public function testFluentSetters(): void
{
$user = new User();
$result = $user->setEmail('a@b.com')
->setFirstName('John')
->setLastName('Doe')
->setPassword('hashed');
self::assertSame($user, $result);
self::assertSame('a@b.com', $user->getEmail());
self::assertSame('John', $user->getFirstName());
self::assertSame('Doe', $user->getLastName());
self::assertSame('hashed', $user->getPassword());
}
public function testEraseCredentialsDoesNotThrow(): void
{
$user = new User();
$user->eraseCredentials();
self::assertNull($user->getId());
}
}