feat: commit before changing gitea
This commit is contained in:
parent
b05bd98f63
commit
ffceda606f
@@ -40,7 +40,7 @@ class DownloadVolumeTest extends AbstractApiTestCase
|
||||
$this->assertResponseHeaderSame('Content-Type', 'application/x-cbz');
|
||||
$contentDisposition = static::getClient()->getResponse()->headers->get('Content-Disposition');
|
||||
$this->assertStringContainsString('attachment; filename=', $contentDisposition);
|
||||
$this->assertStringContainsString('one-piece-volume-1.cbz', $contentDisposition);
|
||||
$this->assertStringContainsString('one-piece_vol1.cbz', $contentDisposition);
|
||||
}
|
||||
|
||||
public function test_it_returns_404_when_manga_not_found(): void
|
||||
|
||||
131
tests/Feature/Manga/ImportChapterTest.php
Normal file
131
tests/Feature/Manga/ImportChapterTest.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
namespace App\Tests\Feature\Manga;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
|
||||
class ImportChapterTest extends WebTestCase
|
||||
{
|
||||
private const API_ENDPOINT = '/api/chapters/import';
|
||||
|
||||
public function test_it_returns_404_when_manga_not_found(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$file = $this->createValidCbzFile();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'non-existent-manga-id',
|
||||
'chapterNumber' => '1.5'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(404);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertEquals('Manga not found', $response['error']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_manga_id_is_missing(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$file = $this->createValidCbzFile();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'chapterNumber' => '1.5'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('mangaId is required', $response[0]['message']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_chapter_number_is_missing(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$file = $this->createValidCbzFile();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'some-manga-id'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('chapterNumber is required', $response[0]['message']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_file_is_missing(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'some-manga-id',
|
||||
'chapterNumber' => '1.5'
|
||||
]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('Please upload a file', $response[0]['message']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_file_is_not_cbz(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
// Create a non-CBZ file
|
||||
$tempFile = tempnam(sys_get_temp_dir(), 'test_');
|
||||
file_put_contents($tempFile, 'This is not a CBZ file');
|
||||
$file = new UploadedFile($tempFile, 'test.txt', 'text/plain');
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'some-manga-id',
|
||||
'chapterNumber' => '1.5'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('valid CBZ file', $response[0]['message']);
|
||||
}
|
||||
|
||||
private function createValidCbzFile(): UploadedFile
|
||||
{
|
||||
$tmpFile = tempnam(sys_get_temp_dir(), 'cbz_');
|
||||
unlink($tmpFile);
|
||||
|
||||
$zip = new \ZipArchive();
|
||||
if ($zip->open($tmpFile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) !== true) {
|
||||
throw new \RuntimeException('Cannot create test CBZ file');
|
||||
}
|
||||
|
||||
$zip->addFromString('image1.jpg', 'fake-image-data');
|
||||
$zip->close();
|
||||
|
||||
return new UploadedFile($tmpFile, 'test-chapter.cbz', 'application/x-cbz');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
131
tests/Feature/Manga/ImportVolumeTest.php
Normal file
131
tests/Feature/Manga/ImportVolumeTest.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
namespace App\Tests\Feature\Manga;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
|
||||
class ImportVolumeTest extends WebTestCase
|
||||
{
|
||||
private const API_ENDPOINT = '/api/volumes/import';
|
||||
|
||||
public function test_it_returns_404_when_manga_not_found(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$file = $this->createValidCbzFile();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'non-existent-manga-id',
|
||||
'volumeNumber' => '1'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(404);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertEquals('Manga not found', $response['error']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_manga_id_is_missing(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$file = $this->createValidCbzFile();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'volumeNumber' => '1'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('mangaId is required', $response[0]['message']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_volume_number_is_missing(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$file = $this->createValidCbzFile();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'some-manga-id'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('volumeNumber is required', $response[0]['message']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_file_is_missing(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'some-manga-id',
|
||||
'volumeNumber' => '1'
|
||||
]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('Please upload a file', $response[0]['message']);
|
||||
}
|
||||
|
||||
public function test_it_returns_422_when_file_is_not_cbz(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
// Create a non-CBZ file
|
||||
$tempFile = tempnam(sys_get_temp_dir(), 'test_');
|
||||
file_put_contents($tempFile, 'This is not a CBZ file');
|
||||
$file = new UploadedFile($tempFile, 'test.txt', 'text/plain');
|
||||
|
||||
$client->request(
|
||||
'POST',
|
||||
self::API_ENDPOINT,
|
||||
[
|
||||
'mangaId' => 'some-manga-id',
|
||||
'volumeNumber' => '1'
|
||||
],
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$this->assertResponseStatusCodeSame(422);
|
||||
$response = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertStringContainsString('valid CBZ file', $response[0]['message']);
|
||||
}
|
||||
|
||||
private function createValidCbzFile(): UploadedFile
|
||||
{
|
||||
$tmpFile = tempnam(sys_get_temp_dir(), 'cbz_');
|
||||
unlink($tmpFile);
|
||||
|
||||
$zip = new \ZipArchive();
|
||||
if ($zip->open($tmpFile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) !== true) {
|
||||
throw new \RuntimeException('Cannot create test CBZ file');
|
||||
}
|
||||
|
||||
$zip->addFromString('image1.jpg', 'fake-image-data');
|
||||
$zip->close();
|
||||
|
||||
return new UploadedFile($tmpFile, 'test-volume.cbz', 'application/x-cbz');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user