feat(setting): implémenter la suppression d'une ContentSource
- Ajoute DeleteContentSourceCommand + CommandHandler (CQRS)
- Expose DELETE /api/content-sources/{id} via API Platform (Resource, Provider, Processor)
- Ajoute 2 tests Feature (204 succès, 404 not found)
- Frontend : méthode delete() dans le repository, action deleteSource() dans le store
- Nouveau composant ContentSourceDeleteModal (modale de confirmation)
- Bouton Supprimer dans la toolbar de ScrapperEdit (visible en mode édition uniquement)
This commit is contained in:
parent
36f873aaca
commit
fc4ab68e8b
50
tests/Feature/Setting/DeleteContentSourceTest.php
Normal file
50
tests/Feature/Setting/DeleteContentSourceTest.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Tests\Feature\Setting;
|
||||
|
||||
use App\Entity\ContentSource;
|
||||
use App\Tests\Feature\AbstractApiTestCase;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Zenstruck\Foundry\Test\ResetDatabase;
|
||||
|
||||
final class DeleteContentSourceTest extends AbstractApiTestCase
|
||||
{
|
||||
use ResetDatabase;
|
||||
|
||||
private int $sourceId;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$source = new ContentSource();
|
||||
$source->setBaseUrl('https://mangadex.org')
|
||||
->setChapterUrlFormat('https://mangadex.org/chapter/{id}')
|
||||
->setScrapingType('html');
|
||||
|
||||
$this->entityManager->persist($source);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->sourceId = $source->getId();
|
||||
}
|
||||
|
||||
public function testItDeletesSourceSuccessfully(): void
|
||||
{
|
||||
static::createClient()->request('DELETE', "/api/content-sources/{$this->sourceId}");
|
||||
|
||||
$this->assertResponseStatusCodeSame(Response::HTTP_NO_CONTENT);
|
||||
|
||||
$this->entityManager->clear();
|
||||
$deletedSource = $this->entityManager->find(ContentSource::class, $this->sourceId);
|
||||
$this->assertNull($deletedSource);
|
||||
}
|
||||
|
||||
public function testItReturnsNotFoundWhenSourceDoesNotExist(): void
|
||||
{
|
||||
static::createClient()->request('DELETE', '/api/content-sources/999999');
|
||||
|
||||
$this->assertResponseStatusCodeSame(Response::HTTP_NOT_FOUND);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user