Files
ludikevent_crm/tests/Repository/AccountRepositoryTest.php
Serreau Jovann 0be752c145 ```
 feat(revervation): [Ajoute la création de session de réservation et le flow]
🐛 fix(PurgeCommandTest): [Utilise addCommand au lieu de add pour les commandes]
📝 chore(deps): [Mise à jour des dépendances Composer et corrections]
🐛 fix(KeycloakAuthenticator): [Corrige le type nullable de l'exception start]
 feat(Customer): [Ajoute les sessions de commandes aux entités Customer]
♻️ refactor(AppLogger): [Refactorise l'AppLogger pour obtenir l'UserAgent]
 feat(FlowReserve): [Ajoute une action de validation du panier]
```
2026-01-31 13:49:25 +01:00

107 lines
3.3 KiB
PHP

<?php
namespace App\Tests\Repository;
use App\Entity\Account;
use App\Repository\AccountRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\Uid\Uuid;
class AccountRepositoryTest extends KernelTestCase
{
private ?EntityManagerInterface $entityManager;
private ?AccountRepository $repository;
protected function setUp(): void
{
$kernel = self::bootKernel();
$this->entityManager = $kernel->getContainer()
->get('doctrine')
->getManager();
$this->repository = $this->entityManager->getRepository(Account::class);
}
protected function tearDown(): void
{
parent::tearDown();
$this->entityManager->close();
$this->entityManager = null;
$this->repository = null;
}
public function testFindAdmin()
{
// 1. Create Admins
$admin = new Account();
$admin->setEmail('admin_' . uniqid() . '@test.com');
$admin->setRoles(['ROLE_ADMIN']);
$admin->setPassword('password');
$admin->setName('Admin');
$admin->setFirstName('User');
$admin->setUsername('admin_user_' . uniqid());
$admin->setUuid(Uuid::v4());
$admin->setIsActif(true);
$admin->setIsFirstLogin(false);
$this->entityManager->persist($admin);
// 2. Create Non-Admin
$user = new Account();
$user->setEmail('user_' . uniqid() . '@test.com');
$user->setRoles(['ROLE_USER']);
$user->setPassword('password');
$user->setName('User');
$user->setFirstName('Normal');
$user->setUsername('normal_user_' . uniqid());
$user->setUuid(Uuid::v4());
$user->setIsActif(true);
$user->setIsFirstLogin(false);
$this->entityManager->persist($user);
$this->entityManager->flush();
// 3. Test findAdmin
$admins = $this->repository->findAdmin();
$this->assertGreaterThanOrEqual(1, count($admins));
$found = false;
foreach ($admins as $a) {
if ($a->getEmail() === 'admin@test.com') {
$found = true;
}
// Ensure no user is returned (this might be tricky if other tests persist data,
// but we check if our non-admin is in the list)
if ($a->getEmail() === 'user@test.com') {
$this->fail('Non-admin user returned in findAdmin()');
}
}
$this->assertTrue($found, 'Admin user not found in findAdmin() result');
}
public function testUpgradePassword()
{
$user = new Account();
$user->setEmail('upgrade_' . uniqid() . '@test.com');
$user->setRoles(['ROLE_USER']);
$user->setPassword('old_hash');
$user->setName('Upgrade');
$user->setFirstName('User');
$user->setUsername('upgrade_user_' . uniqid());
$user->setUuid(Uuid::v4());
$user->setIsActif(true);
$user->setIsFirstLogin(false);
$this->entityManager->persist($user);
$this->entityManager->flush();
$this->repository->upgradePassword($user, 'new_encoded_password');
$updatedUser = $this->repository->find($user->getId());
$this->assertEquals('new_encoded_password', $updatedUser->getPassword());
}
}