From c1028fd943b76acb50e1027082ee69cda4cbfcac Mon Sep 17 00:00:00 2001
From: demangel6u <mael.demangel3@etu.univ-lorraine.fr>
Date: Tue, 2 Apr 2024 18:13:22 +0200
Subject: [PATCH] ajout du test de poster une annonce

---
 templates/annonce_creation/creation.html.twig |   2 +-
 tests/TestsPosterAnnonceTest.php              | 119 ++++++++++++++++++
 2 files changed, 120 insertions(+), 1 deletion(-)
 create mode 100644 tests/TestsPosterAnnonceTest.php

diff --git a/templates/annonce_creation/creation.html.twig b/templates/annonce_creation/creation.html.twig
index 741b7692..4128756f 100644
--- a/templates/annonce_creation/creation.html.twig
+++ b/templates/annonce_creation/creation.html.twig
@@ -17,7 +17,7 @@
             Date de début*
             {{ form_widget(form.date_debut, {'attr': {'required': true, 'class': 'form-control'}}) }}
 
-            <button type="submit" class="creation_annonce">Créer</button>
+            <button type="submit" id="creer_annonce" class="creation_annonce">Créer</button>
         </div>
         {{ form_end(form) }}
         <a href="{{ path("app_home_page")}}"><button class="btn-connexion2">Retourner à l'accueil</button></a>
diff --git a/tests/TestsPosterAnnonceTest.php b/tests/TestsPosterAnnonceTest.php
new file mode 100644
index 00000000..f876d1eb
--- /dev/null
+++ b/tests/TestsPosterAnnonceTest.php
@@ -0,0 +1,119 @@
+<?php
+
+namespace App\Tests;
+
+use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
+use App\Repository\PersonneRepository;
+
+class TestsPosterAnnonceTest extends WebTestCase
+{
+    public function testPosterAnnonce(): void
+    {
+        $client = static::createClient();
+
+        $userRepository = static::getContainer()->get(PersonneRepository::class);
+
+        $user = $userRepository->findOneByLogin('test');
+
+        $client->loginUser($user);
+
+        // Accéder à la page d'inscription
+        $client->request('GET', '/annonce/creation');
+
+        // Soumettre le formulaire de création avec des données valides
+        $client->submitForm('creer_annonce',[
+            'annonce[type_prestation]' => 'pret',
+            'annonce[titre]'=> 'testAnnonce',
+            'annonce[descr_prestation]' => 'ceci est une description',
+            'annonce[cout_prestation]'=> 50,
+        ]);
+
+        $this->assertResponseRedirects('/');
+
+        //On test si l'on peut créer deux fois la même annonce
+        $client->request('GET', '/annonce/creation');
+
+        // Soumettre le formulaire de création avec des données valides
+        $client->submitForm('creer_annonce',[
+            'annonce[type_prestation]' => 'pret',
+            'annonce[titre]'=> 'testAnnonce',
+            'annonce[descr_prestation]' => 'ceci est une description',
+            'annonce[cout_prestation]'=> 50,
+        ]);
+
+        $this->assertResponseRedirects('/');
+
+        //On test si le titre peut être vide
+        $client->request('GET', '/annonce/creation');
+
+        // Soumettre le formulaire de création avec des données valides
+        $client->submitForm('creer_annonce',[
+            'annonce[type_prestation]' => 'pret',
+            'annonce[titre]'=> null,
+            'annonce[descr_prestation]' => 'ceci est une description',
+            'annonce[cout_prestation]'=> 50,
+        ]);
+        $this->assertFalse($client->getResponse()->isRedirect());
+
+        //On test si le cout peut être nul
+        $client->request('GET', '/annonce/creation');
+
+        // Soumettre le formulaire de création avec des données valides
+        $client->submitForm('creer_annonce',[
+            'annonce[type_prestation]' => 'pret',
+            'annonce[titre]'=> '',
+            'annonce[descr_prestation]' => 'ceci est une description',
+            'annonce[cout_prestation]'=> null,
+        ]);
+        $this->assertFalse($client->getResponse()->isRedirect());
+    }
+
+    public function testVisualisationAnnonce(): void
+    {
+        $client = static::createClient();
+
+        $userRepository = static::getContainer()->get(PersonneRepository::class);
+
+        $user = $userRepository->findOneByLogin('test');
+
+        $client->loginUser($user);
+
+        // Accéder à la page de création d'annonce
+        $client->request('GET', '/annonce/creation');
+
+        // Soumettre le formulaire de création avec des données valides
+        $client->submitForm('creer_annonce',[
+            'annonce[type_prestation]' => 'pret',
+            'annonce[titre]'=> 'testPretAnnonce',
+            'annonce[descr_prestation]' => 'ceci est une description',
+            'annonce[cout_prestation]'=> 50,
+        ]);
+
+        $this->assertResponseRedirects('/');
+
+        // Accéder à la page de création d'annonce
+        $client->request('GET', '/annonce/creation');
+
+        // Soumettre le formulaire de création avec des données valides
+        $client->submitForm('creer_annonce',[
+            'annonce[type_prestation]' => 'service',
+            'annonce[titre]'=> 'testServiceAnnonce',
+            'annonce[descr_prestation]' => 'ceci est une description',
+            'annonce[cout_prestation]'=> 100,
+        ]);
+
+        $this->assertResponseRedirects('/');
+
+        $client->request('GET', '');
+
+        $this->assertSelectorExists('p','testPretAnnonce');
+        $this->assertSelectorExists('p','50 florains');
+        $this->assertSelectorExists('p','Prèt');
+
+        $this->assertSelectorExists('p','testServiceAnnonce');
+        $this->assertSelectorExists('p','100 florains');
+        $this->assertSelectorExists('p','Service');
+
+
+    }
+}
-- 
GitLab