test(manga): ajout test regression GET /api/mangas avec chapitres

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 <noreply@anthropic.com>
This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2026-03-09 18:07:34 +01:00
parent c50f1638ee
commit a4b3d8a5f1

View File

@@ -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++) {