From f727fc819d5ffc4aa2c003be32d2800adb74d1c7 Mon Sep 17 00:00:00 2001 From: "cleo.eiras" Date: Thu, 5 Jun 2025 09:40:52 +0200 Subject: [PATCH] WIP tests unitaires --- config/services.yaml | 4 ++ src/Controller/EmojiController.php | 7 ++ tests/Controller/EmojiControllerTest.php | 89 ++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 tests/Controller/EmojiControllerTest.php diff --git a/config/services.yaml b/config/services.yaml index 2d6a76f..b4300e0 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -6,6 +6,10 @@ parameters: services: + App\Repository\RarityRepository: + public: true + App\Repository\EmojiRepository: + public: true # default configuration for services in *this* file _defaults: autowire: true # Automatically injects dependencies in your services. diff --git a/src/Controller/EmojiController.php b/src/Controller/EmojiController.php index 10bdc40..5a8da9d 100644 --- a/src/Controller/EmojiController.php +++ b/src/Controller/EmojiController.php @@ -33,6 +33,13 @@ class EmojiController extends AbstractController ]); } + #[Route('/count', name: 'count')] + public function count(EmojiRepository $emojiRepository): Response + { + $count = count($emojiRepository->findAll()); + return new Response(['count' => $count]); + } + #[Route('/add/{code}', name: 'add')] public function addEmojiDebug(string $code, EntityManagerInterface $entityManager) { $emoji = new Emoji(); diff --git a/tests/Controller/EmojiControllerTest.php b/tests/Controller/EmojiControllerTest.php new file mode 100644 index 0000000..a576786 --- /dev/null +++ b/tests/Controller/EmojiControllerTest.php @@ -0,0 +1,89 @@ +client = static::createClient(); + $this->em = static::getContainer()->get(EntityManagerInterface::class); + + // Démarre une transaction pour pouvoir annuler les modifications des tests + $this->em->getConnection()->beginTransaction(); + } + + protected function tearDown(): void + { + // Rollback la transaction pour annuler les changements des tests + $this->em->getConnection()->rollBack(); + parent::tearDown(); + } + + public function testReproduceEmoji(): void + { + $emoji1 = (new Emoji()) + ->setCode('😀') + ->setName('Parent1') + ->setStrength(1.0) + ->setToughness(1.0) + ->setIntelligence(1.0) + ->setSpeed(1.0) + ->setFightsWon(5); + + $emoji2 = (new Emoji()) + ->setCode('😎') + ->setName('Parent2') + ->setStrength(2.0) + ->setToughness(2.0) + ->setIntelligence(2.0) + ->setSpeed(2.0) + ->setFightsWon(3); + + $rarity = (new Rarity()) + ->setName('Rare') + ->setDropRate(1.0); + + $this->em->persist($rarity); + $this->em->persist($emoji1); + $this->em->persist($emoji2); + $this->em->flush(); + + $id1 = $emoji1->getId(); + $id2 = $emoji2->getId(); + + $this->client->request('GET', "/emoji/fusion/$id1/$id2"); + + $response = $this->client->getResponse(); + $this->assertEquals(Response::HTTP_OK, $response->getStatusCode()); + + $data = json_decode($response->getContent(), true); + $this->assertArrayHasKey('childId', $data); + $this->assertEquals('Child created', $data['message']); + } + + public function testFusionEmojiNotFound(): void + { + $emojiRepo = $this->createMock(EmojiRepository::class); + $emojiRepo->method('find')->willReturn(null); + + $this->client->request('GET', '/emoji/fusion/999/998'); + + $response = $this->client->getResponse(); + $this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode()); + + $data = json_decode($response->getContent(), true); + $this->assertEquals('One or both emojis not found', $data['error']); + } +}