```
✨ feat(ReserverController): Ajoute vérification de disponibilité produit. 🛠️ refactor(BackupCommand): Utilise DatabaseDumper et ZipArchiver. ✨ feat(GitSyncLogCommand): Utilise Gemini pour messages plus clairs. ✨ feat(GenerateVideoThumbsCommand): Utilise VideoThumbnailer service. ✨ feat(AppWarmupImagesCommand): Utilise StorageInterface pour warmup. 🔒️ security(nelmio_security): Renforce la sécurité avec des en-têtes. 🔧 chore(caddy): Améliore la configuration de Caddy pour la performance. 🐛 fix(makefile): Corrige les commandes de test. 🧪 chore(.env.test): Supprime la ligne vide à la fin du fichier. 🔧 chore(doctrine): Active native_lazy_objects. 🔧 chore(cache): Ajoute un cache system. ```
This commit is contained in:
106
tests/Controller/ReserverControllerTest.php
Normal file
106
tests/Controller/ReserverControllerTest.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace App\Tests\Controller;
|
||||
|
||||
use App\Controller\ReserverController;
|
||||
use App\Entity\Product;
|
||||
use App\Entity\ProductReserve;
|
||||
use App\Repository\ProductRepository;
|
||||
use App\Repository\ProductReserveRepository;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
|
||||
class ReserverControllerTest extends TestCase
|
||||
{
|
||||
public function testProductCheckAvailable()
|
||||
{
|
||||
// 1. Mock Repositories
|
||||
$productRepository = $this->createMock(ProductRepository::class);
|
||||
$productReserveRepository = $this->createMock(ProductReserveRepository::class);
|
||||
|
||||
// 2. Setup Data
|
||||
$productId = "1";
|
||||
$startStr = "2026-02-07";
|
||||
$endStr = "2026-02-14";
|
||||
|
||||
$product = new Product();
|
||||
// We can't set ID easily if it's generated, but the repo find returning it is enough.
|
||||
|
||||
$productRepository->expects($this->once())
|
||||
->method('find')
|
||||
->with($productId)
|
||||
->willReturn($product);
|
||||
|
||||
$productReserveRepository->expects($this->once())
|
||||
->method('checkAvailability')
|
||||
->willReturn(true);
|
||||
|
||||
// 3. Create Request
|
||||
$request = new Request([], [], [], [], [], [], json_encode([
|
||||
'id' => $productId,
|
||||
'start' => $startStr,
|
||||
'end' => $endStr
|
||||
]));
|
||||
$request->setMethod('POST');
|
||||
$request->headers->set('Content-Type', 'application/json');
|
||||
|
||||
// 4. Instantiate Controller
|
||||
$controller = new ReserverController();
|
||||
|
||||
// 5. Call Method
|
||||
$response = $controller->productCheck($request, $productReserveRepository, $productRepository);
|
||||
|
||||
// 6. Assertions
|
||||
$this->assertInstanceOf(JsonResponse::class, $response);
|
||||
$content = json_decode($response->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('dispo', $content);
|
||||
$this->assertTrue($content['dispo']);
|
||||
}
|
||||
|
||||
public function testProductCheckNotAvailable()
|
||||
{
|
||||
// 1. Mock Repositories
|
||||
$productRepository = $this->createMock(ProductRepository::class);
|
||||
$productReserveRepository = $this->createMock(ProductReserveRepository::class);
|
||||
|
||||
// 2. Setup Data
|
||||
$productId = "1";
|
||||
$startStr = "2026-02-07";
|
||||
$endStr = "2026-02-14";
|
||||
|
||||
$product = new Product();
|
||||
|
||||
$productRepository->expects($this->once())
|
||||
->method('find')
|
||||
->with($productId)
|
||||
->willReturn($product);
|
||||
|
||||
$productReserveRepository->expects($this->once())
|
||||
->method('checkAvailability')
|
||||
->willReturn(false);
|
||||
|
||||
// 3. Create Request
|
||||
$request = new Request([], [], [], [], [], [], json_encode([
|
||||
'id' => $productId,
|
||||
'start' => $startStr,
|
||||
'end' => $endStr
|
||||
]));
|
||||
$request->setMethod('POST');
|
||||
$request->headers->set('Content-Type', 'application/json');
|
||||
|
||||
// 4. Instantiate Controller
|
||||
$controller = new ReserverController();
|
||||
|
||||
// 5. Call Method
|
||||
$response = $controller->productCheck($request, $productReserveRepository, $productRepository);
|
||||
|
||||
// 6. Assertions
|
||||
$this->assertInstanceOf(JsonResponse::class, $response);
|
||||
$content = json_decode($response->getContent(), true);
|
||||
|
||||
$this->assertArrayHasKey('dispo', $content);
|
||||
$this->assertFalse($content['dispo']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user