Add organizer logo upload, Meilisearch organizer search, and webp URL rewriting

VichUploader organizer logo:
- Add organizer_logo mapping with local Flysystem storage
- Add logoFile, logoName, updatedAt fields to User entity
- Use Vich Attribute (not deprecated Annotation)
- Add migration for logo_name and updated_at columns

Meilisearch organizer search:
- Add search bar on /admin/organisateurs page (hides tabs during search)
- Index organizers in Meilisearch on approval
- Sync button on dashboard now syncs both buyers and organizers
- Add tests: search query, search error

Liip Imagine webp:
- Add format filter to all filter_sets for explicit webp conversion
- Add organizer_logo filter_set (400x400, webp)
- Create WebpExtensionSubscriber to rewrite image URLs to .webp extension
- 8 tests for subscriber (png, jpg, jpeg, gif, webp passthrough, case insensitive, null)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-19 18:46:34 +01:00
parent a047cfa787
commit 82829f6240
11 changed files with 350 additions and 11 deletions

View File

@@ -88,6 +88,33 @@ class UserTest extends TestCase
self::assertNull($user->getPhone());
}
public function testLogoFields(): void
{
$user = new User();
self::assertNull($user->getLogoFile());
self::assertNull($user->getLogoName());
self::assertNull($user->getUpdatedAt());
$result = $user->setLogoName('logo.png');
self::assertSame($user, $result);
self::assertSame('logo.png', $user->getLogoName());
$file = new \Symfony\Component\HttpFoundation\File\File(__FILE__);
$result = $user->setLogoFile($file);
self::assertSame($user, $result);
self::assertSame($file, $user->getLogoFile());
self::assertNotNull($user->getUpdatedAt());
}
public function testSetLogoFileNullDoesNotUpdateTimestamp(): void
{
$user = new User();
$user->setLogoFile(null);
self::assertNull($user->getUpdatedAt());
}
public function testResetCodeFields(): void
{
$user = new User();