From a4b3d8a5f1be440ea1348e77c8a59647afcdf7ca Mon Sep 17 00:00:00 2001 From: "ext.jeremy.guillot@maxicoffee.domains" Date: Mon, 9 Mar 2026 18:07:34 +0100 Subject: [PATCH] test(manga): ajout test regression GET /api/mangas avec chapitres MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Détecte le crash EAGER loading Doctrine si la colonne pages_directory est absente de la table chapter (SQLSTATE 42703). Co-Authored-By: Claude Sonnet 4.6 --- tests/Feature/Manga/GetMangaListTest.php | 33 +++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/tests/Feature/Manga/GetMangaListTest.php b/tests/Feature/Manga/GetMangaListTest.php index 7acc48f..ad88458 100644 --- a/tests/Feature/Manga/GetMangaListTest.php +++ b/tests/Feature/Manga/GetMangaListTest.php @@ -3,12 +3,15 @@ namespace App\Tests\Feature\Manga; use App\Entity\Manga; +use App\Factory\ChapterFactory; +use App\Factory\MangaFactory; use App\Tests\Feature\AbstractApiTestCase; +use Zenstruck\Foundry\Test\Factories; use Zenstruck\Foundry\Test\ResetDatabase; class GetMangaListTest extends AbstractApiTestCase { - use ResetDatabase; + use ResetDatabase, Factories; public function testGetEmptyMangaList(): void { @@ -80,6 +83,34 @@ class GetMangaListTest extends AbstractApiTestCase $this->assertEquals('Manga C', $data['items'][2]['title']); } + public function testGetMangaListWithChapters(): void + { + // Given — manga with chapters triggers Doctrine EAGER loading of chapters collection + // (regression: colonne pages_directory doit exister sinon 500) + $manga = MangaFactory::createOne([ + 'title' => 'One Piece', + 'slug' => 'one-piece', + 'imageUrl' => 'https://example.com/image.jpg', + 'thumbnailUrl' => 'https://example.com/thumb.jpg', + ]); + ChapterFactory::createOne([ + 'manga' => $manga, + 'number' => 1.0, + 'title' => 'Romance Dawn', + 'volume' => 1, + 'visible' => true, + ]); + + // When + $client = static::createClient(); + $client->request('GET', '/api/mangas'); + + // Then — doit retourner 200 même avec des chapitres (eager loading OK) + $this->assertResponseIsSuccessful(); + $data = $client->getResponse()->toArray(); + $this->assertEquals(1, $data['total']); + } + private function createMangas(int $count): void { for ($i = 1; $i <= $count; $i++) {