Add coverage tests: event picture upload (create/edit), searchEvents fallback/empty/results/no-hits

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-20 21:47:38 +01:00
parent 8d062cfd36
commit e0d12ba874
2 changed files with 129 additions and 0 deletions

View File

@@ -690,6 +690,74 @@ class AccountControllerTest extends WebTestCase
self::assertResponseRedirects('/mon-compte/evenement/'.$event->getId().'/modifier'); self::assertResponseRedirects('/mon-compte/evenement/'.$event->getId().'/modifier');
} }
public function testCreateEventWithPicture(): void
{
$client = static::createClient();
$user = $this->createUser(['ROLE_ORGANIZER'], true);
$client->loginUser($user);
$picture = new \Symfony\Component\HttpFoundation\File\UploadedFile(
__DIR__.'/../../public/logo.png',
'affiche.png',
'image/png',
null,
true,
);
$client->request('POST', '/mon-compte/evenement/creer', [
'title' => 'Event With Picture',
'description' => 'Description',
'start_at' => '2026-09-01T10:00',
'end_at' => '2026-09-01T18:00',
'address' => '1 rue test',
'zipcode' => '75001',
'city' => 'Paris',
], ['event_main_picture' => $picture]);
self::assertResponseRedirects('/mon-compte?tab=events');
}
public function testEditEventWithPicture(): void
{
$client = static::createClient();
$em = static::getContainer()->get(EntityManagerInterface::class);
$user = $this->createUser(['ROLE_ORGANIZER'], true);
$event = new \App\Entity\Event();
$event->setAccount($user);
$event->setTitle('Edit With Pic');
$event->setStartAt(new \DateTimeImmutable('2026-08-01 10:00'));
$event->setEndAt(new \DateTimeImmutable('2026-08-01 18:00'));
$event->setAddress('1 rue');
$event->setZipcode('75001');
$event->setCity('Paris');
$em->persist($event);
$em->flush();
$client->loginUser($user);
$picture = new \Symfony\Component\HttpFoundation\File\UploadedFile(
__DIR__.'/../../public/logo.png',
'affiche.png',
'image/png',
null,
true,
);
$client->request('POST', '/mon-compte/evenement/'.$event->getId().'/modifier', [
'title' => 'Edited With Pic',
'description' => 'New desc',
'start_at' => '2026-09-01T10:00',
'end_at' => '2026-09-01T18:00',
'address' => '2 rue',
'zipcode' => '69001',
'city' => 'Lyon',
], ['event_main_picture' => $picture]);
self::assertResponseRedirects('/mon-compte?tab=events');
}
public function testEventsSearchReturnsSuccess(): void public function testEventsSearchReturnsSuccess(): void
{ {
$client = static::createClient(); $client = static::createClient();

View File

@@ -146,4 +146,65 @@ class EventIndexServiceTest extends TestCase
$this->service->removeEvent($event); $this->service->removeEvent($event);
} }
public function testSearchEventsFallsBackOnException(): void
{
$this->meilisearch->method('search')
->willThrowException(new \RuntimeException('Meilisearch down'));
$repo = $this->createMock(\Doctrine\ORM\EntityRepository::class);
$repo->method('findBy')->willReturn([]);
$em = $this->createMock(EntityManagerInterface::class);
$em->method('getRepository')->willReturn($repo);
$service = new EventIndexService($this->meilisearch, $em);
$result = $service->searchEvents('event_global', 'test', ['isOnline' => true]);
self::assertIsArray($result);
}
public function testSearchEventsEmptyQueryReturnsFallback(): void
{
$repo = $this->createMock(\Doctrine\ORM\EntityRepository::class);
$repo->method('findBy')->willReturn([]);
$em = $this->createMock(EntityManagerInterface::class);
$em->method('getRepository')->willReturn($repo);
$service = new EventIndexService($this->meilisearch, $em);
$result = $service->searchEvents('event_global', '', ['isOnline' => true]);
self::assertIsArray($result);
}
public function testSearchEventsWithResults(): void
{
$this->meilisearch->method('search')
->willReturn(['hits' => [['id' => 1], ['id' => 2]]]);
$repo = $this->createMock(\Doctrine\ORM\EntityRepository::class);
$repo->method('findBy')->willReturn([]);
$em = $this->createMock(EntityManagerInterface::class);
$em->method('getRepository')->willReturn($repo);
$service = new EventIndexService($this->meilisearch, $em);
$result = $service->searchEvents('event_global', 'brocante');
self::assertIsArray($result);
}
public function testSearchEventsNoHits(): void
{
$this->meilisearch->method('search')
->willReturn(['hits' => []]);
$em = $this->createMock(EntityManagerInterface::class);
$service = new EventIndexService($this->meilisearch, $em);
$result = $service->searchEvents('event_global', 'zzzzz');
self::assertEmpty($result);
}
} }