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:
parent
c50f1638ee
commit
a4b3d8a5f1
@@ -3,12 +3,15 @@
|
|||||||
namespace App\Tests\Feature\Manga;
|
namespace App\Tests\Feature\Manga;
|
||||||
|
|
||||||
use App\Entity\Manga;
|
use App\Entity\Manga;
|
||||||
|
use App\Factory\ChapterFactory;
|
||||||
|
use App\Factory\MangaFactory;
|
||||||
use App\Tests\Feature\AbstractApiTestCase;
|
use App\Tests\Feature\AbstractApiTestCase;
|
||||||
|
use Zenstruck\Foundry\Test\Factories;
|
||||||
use Zenstruck\Foundry\Test\ResetDatabase;
|
use Zenstruck\Foundry\Test\ResetDatabase;
|
||||||
|
|
||||||
class GetMangaListTest extends AbstractApiTestCase
|
class GetMangaListTest extends AbstractApiTestCase
|
||||||
{
|
{
|
||||||
use ResetDatabase;
|
use ResetDatabase, Factories;
|
||||||
|
|
||||||
public function testGetEmptyMangaList(): void
|
public function testGetEmptyMangaList(): void
|
||||||
{
|
{
|
||||||
@@ -80,6 +83,34 @@ class GetMangaListTest extends AbstractApiTestCase
|
|||||||
$this->assertEquals('Manga C', $data['items'][2]['title']);
|
$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
|
private function createMangas(int $count): void
|
||||||
{
|
{
|
||||||
for ($i = 1; $i <= $count; $i++) {
|
for ($i = 1; $i <= $count; $i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user