wip: guest account registration (self-service and booking create flow)

This commit is contained in:
Björn Fromme committed 2026-06-23 16:27:09 +02:00
1 parent e4430ac5c5
commit d74888f64b
43 files changed
+2736 -144

No files matched your search

+71
View File
@@ -0,0 +1,71 @@
<?php
declare(strict_types=1);
namespace App\Tests\Repository;
use App\Repository\UserRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\QueryBuilder;
use PHPUnit\Framework\TestCase;
class UserRepositoryTest extends TestCase
{
public function testDeleteExpiredDormantGuestInvitesBuildsExpectedQuery(): void
{
$query = $this->createMock(Query::class);
$query
->expects(self::once())
->method('execute')
->willReturn(2);
$threshold = new \DateTimeImmutable('2026-05-29 01:00:00');
$queryBuilder = $this->createMock(QueryBuilder::class);
$andWhereCalls = 0;
$queryBuilder
->expects(self::once())
->method('delete')
->willReturnSelf();
$queryBuilder
->expects(self::once())
->method('where')
->with('u.welcomeActivatedAt IS NULL')
->willReturnSelf();
$queryBuilder
->expects(self::exactly(2))
->method('andWhere')
->willReturnCallback(function (string $condition) use (&$andWhereCalls, $queryBuilder): QueryBuilder {
$expectedConditions = [
'u.welcomeActivationExpiresAt IS NOT NULL',
'u.welcomeActivationExpiresAt <= :threshold',
];
self::assertSame($expectedConditions[$andWhereCalls], $condition);
++$andWhereCalls;
return $queryBuilder;
});
$queryBuilder
->expects(self::once())
->method('setParameter')
->with('threshold', $threshold)
->willReturnSelf();
$queryBuilder
->expects(self::once())
->method('getQuery')
->willReturn($query);
$repository = new class($queryBuilder) extends UserRepository {
public function __construct(private readonly QueryBuilder $queryBuilder)
{
}
public function createQueryBuilder($alias, $indexBy = null): QueryBuilder
{
return $this->queryBuilder;
}
};
self::assertSame(2, $repository->deleteExpiredDormantGuestInvites($threshold));
}
}