- 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>
67 lines
1.7 KiB
PHP
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());
|
|
}
|
|
}
|