123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- <?php
-
- namespace Muzich\CoreBundle\Tests\Controller;
-
- use Muzich\CoreBundle\lib\FunctionalTest;
-
- class FavoriteControllerTest extends FunctionalTest
- {
-
- /**
- * Test du listing de ses favoris
- */
- public function testMyFavorites()
- {
- $this->client = self::createClient();
- $this->connectUser('bux', 'toor');
-
- // On va cliquer sur le lien 'Mes favoris'
- $this->exist('a[href="'.($url = $this->generateUrl('favorites_my_list')).'"]');
- $link = $this->selectLink('a[href="'.$url.'"]');
- // On clique dessus
- $this->clickOnLink($link);
- $this->isResponseSuccess();
-
- $elements = $this->getDoctrine()->getEntityManager()->createQuery("
- SELECT e FROM MuzichCoreBundle:Element e
- LEFT JOIN e.elements_favorites ef
- WHERE ef.user = :uid
- ")->setParameter('uid', $this->getUser()->getId())
- ->getResult()
- ;
-
- $this->assertTrue(!is_null($elements));
-
- if (count($elements))
- {
- foreach ($elements as $element)
- {
- $this->exist('li:contains("'.$element->getName().'")');
- }
- }
- }
-
- /**
- * Test de la page listant les favoris d'un utilisateur
- */
- public function testHisFavorites()
- {
- $this->client = self::createClient();
- $this->connectUser('bob', 'toor');
-
- $bux = $this->getDoctrine()->getRepository('MuzichCoreBundle:User')
- ->findOneByUsername('bux')
- ;
-
- // On se rend sur sa page des favoris de bux
- $this->crawler = $this->client->request('GET', $this->generateUrl('favorite_user_list', array('slug' => 'bux')));
-
- $elements = $this->getDoctrine()->getEntityManager()->createQuery("
- SELECT e FROM MuzichCoreBundle:Element e
- LEFT JOIN e.elements_favorites ef
- WHERE ef.user = :uid
- ")->setParameter('uid', $bux->getId())
- ->getResult()
- ;
-
- $this->assertTrue(!is_null($elements));
-
- if (count($elements))
- {
- foreach ($elements as $element)
- {
- $this->exist('li:contains("'.$element->getName().'")');
- }
- }
- }
-
- /**
- * Test d'ajout en favori un element, puis son retrait
- * Ce test dépend actuellement du fait que l'élément testé se truove sur la
- * page du groupe en question
- */
- public function testFavoritesManagement()
- {
- $this->client = self::createClient();
- $this->connectUser('bob', 'toor');
-
- // On se rend sur la page du groupe Dudeldrum
- $DUDELDRUM = $this->getDoctrine()->getRepository('MuzichCoreBundle:Group')
- ->findOneBySlug('dudeldrum')
- ->getSingleResult()
- ;
-
- $element_DUDELDRUM = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('DUDELDRUM')
- ;
-
- // En base l'enregistrement n'existe pas encore
- $favorite = $this->getDoctrine()->getRepository('MuzichCoreBundle:UsersElementsFavorites')->findOneBy(array(
- 'user' => $this->getUser()->getId(),
- 'element' => $element_DUDELDRUM->getId()
- ));
-
- $this->assertTrue(is_null($favorite));
-
- $this->crawler = $this->client->request(
- 'GET',
- $this->generateUrl('show_group', array('slug' => $DUDELDRUM->getSlug()))
- );
-
- $this->isResponseSuccess();
-
- // Controle de l'évolution du score de joelle
- $joelle = $this->getUser('joelle');
- $this->assertEquals($joelle->getReputation(), 2);
-
- // L'élément est présent sur la page
- $this->exist('li:contains("DUDELDRUM")');
- $this->exist('a[href="'.($url = $this->generateUrl('favorite_add', array(
- 'id' => $element_DUDELDRUM->getId(),
- 'token' => $this->getUser()->getPersonalHash()
- ))).'"]');
- $link = $this->selectLink('a[href="'.$url.'"]');
- $this->clickOnLink($link);
-
- $this->isResponseRedirection();
- $this->followRedirection();
- $this->isResponseSuccess();
-
- // Le lien pour ajouter aux favoris a disparus
- $this->exist('li:contains("DUDELDRUM")');
- $this->notExist('a[href="'.$url.'"]');
-
- // Il a laissé place aux lien pour le retirer
- $this->exist('a[href="'.($url_rm = $this->generateUrl('favorite_remove', array(
- 'id' => $element_DUDELDRUM->getId(),
- 'token' => $this->getUser()->getPersonalHash()
- ))).'"]');
-
- // En base l'enregistrement existe
- $favorite = $this->getDoctrine()->getRepository('MuzichCoreBundle:UsersElementsFavorites')->findOneBy(array(
- 'user' => $this->getUser()->getId(),
- 'element' => $element_DUDELDRUM->getId()
- ));
-
- $this->assertTrue(!is_null($favorite));
-
- // Controle de l'évolution du score de joelle
- $joelle = $this->getUser('joelle');
- $this->assertEquals($joelle->getReputation(), 7);
-
- // On se rend sur la page de ses favoris
- $this->crawler = $this->client->request('GET', $this->generateUrl('favorites_my_list'));
-
- $this->exist('li:contains("DUDELDRUM")');
-
- // On va maintenant le retirer de nox favoris
- $this->exist('a[href="'.$url_rm.'"]');
- $link = $this->selectLink('a[href="'.$url_rm.'"]');
- $this->clickOnLink($link);
-
- $this->isResponseRedirection();
- $this->followRedirection();
- $this->isResponseSuccess();
-
- $this->NotExist('li:contains("DUDELDRUM")');
-
- // En base l'enregistrement a été supprimé
- $favorite = $this->getDoctrine()->getRepository('MuzichCoreBundle:UsersElementsFavorites')->findOneBy(array(
- 'user' => $this->getUser()->getId(),
- 'element' => $element_DUDELDRUM->getId()
- ));
-
- $this->assertTrue(is_null($favorite));
-
- // Controle de l'évolution du score de joelle
- $joelle = $this->getUser('joelle');
- $this->assertEquals($joelle->getReputation(), 2);
- }
-
- public function testAjax()
- {
- $this->client = self::createClient();
- $this->connectUser('bux', 'toor');
-
- $bux = $this->getUser();
-
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- // Controle de l'évolution du score de joelle
- $bux = $this->getUser('bux');
- $this->assertEquals($bux->getReputation(), 22);
-
- // Ajout d'un élément en favoris
- // Il ajoute cet élément en favoris
- $url = $this->generateUrl('favorite_add', array(
- 'id' => $element->getId(),
- 'token' => $bux->getPersonalHash()
- ));
-
- $crawler = $this->client->request('GET', $url, array(), array(), array(
- 'HTTP_X-Requested-With' => 'XMLHttpRequest',
- ));
-
- $this->isResponseSuccess();
-
- // On contrôle la présence du favoris
- $fav = $this->getDoctrine()->getRepository('MuzichCoreBundle:UsersElementsFavorites')
- ->findOneBy(array(
- 'user' => $bux->getId(),
- 'element' => $element->getId()
- ));
-
- $this->assertTrue(!is_null($fav));
-
- // Controle de l'évolution du score de joelle
- $bux = $this->getUser('bux');
- $this->assertEquals($bux->getReputation(), 22);
-
- // On enlève des favoris
- $url = $this->generateUrl('favorite_remove', array(
- 'id' => $element->getId(),
- 'token' => $bux->getPersonalHash()
- ));
-
- $crawler = $this->client->request('GET', $url, array(), array(), array(
- 'HTTP_X-Requested-With' => 'XMLHttpRequest',
- ));
-
- // On contrôle l'absence du favoris
- $fav = $this->getDoctrine()->getRepository('MuzichCoreBundle:UsersElementsFavorites')
- ->findOneBy(array(
- 'user' => $bux->getId(),
- 'element' => $element->getId()
- ));
-
- $this->assertTrue(is_null($fav));
-
- // Controle de l'évolution du score de joelle
- $bux = $this->getUser('bux');
- $this->assertEquals($bux->getReputation(), 22);
- }
-
- /**
- * Test de la fonction ajax de récupération de plus de favoris
- */
- public function testFilterElements()
- {
- $this->client = self::createClient();
- $this->connectUser('paul', 'toor');
-
- $paul = $this->getUser();
-
- $hardtek_id = $this->getDoctrine()->getRepository('MuzichCoreBundle:Tag')->findOneByName('Hardtek')->getId();
- $tribe_id = $this->getDoctrine()->getRepository('MuzichCoreBundle:Tag')->findOneByName('Tribe')->getId();
-
- // Ouverture de la page favoris
- $this->crawler = $this->client->request('GET', $this->generateUrl('favorites_my_list'));
-
- // On doit voir deux elements pour paul
- $this->exist('span.element_name:contains("All Is Full Of Pain")');
- $this->exist('span.element_name:contains("Heretik System Popof - Resistance")');
-
- // Récupération de la liste avec la kekete ajax pour Tribe
- $url = $this->generateUrl('favorite_get', array(
- 'user_id' => $paul->getId(), // Utilisateur pour lequel on demande les favoris
- 'tags_ids_json' => json_encode(array($tribe_id))
- ));
- $this->crawler = $this->client->request('GET', $url, array(), array(), array(
- 'HTTP_X-Requested-With' => 'XMLHttpRequest',
- ));
-
- $response_content = json_decode($this->client->getResponse()->getContent(), true);
- $html = $response_content['html'];
-
- $this->isResponseSuccess();
- $this->assertTrue(strpos($html, 'All Is Full Of Pain') !== false);
- $this->assertTrue(strpos($html, 'Heretik System Popof - Resistance') === false);
-
- // Récupération de la liste avec la kekete ajax pour Hardtek
- $url = $this->generateUrl('favorite_get', array(
- 'user_id' => $paul->getId(), // Utilisateur pour lequel on demande les favoris
- 'tags_ids_json' => json_encode(array($hardtek_id))
- ));
-
- $this->crawler = $this->client->request('GET', $url, array(), array(), array(
- 'HTTP_X-Requested-With' => 'XMLHttpRequest',
- ));
-
- $this->isResponseSuccess();
-
- $response_content = json_decode($this->client->getResponse()->getContent(), true);
- $html = $response_content['html'];
-
- $this->isResponseSuccess();
- $this->assertTrue(strpos($html, 'All Is Full Of Pain') !== false);
- $this->assertTrue(strpos($html, 'Heretik System Popof - Resistance') !== false);
-
- // Récupération de la liste avec la kekete ajax pour Tribe + Hardtek
- $url = $this->generateUrl('favorite_get', array(
- 'user_id' => $paul->getId(), // Utilisateur pour lequel on demande les favoris
- 'tags_ids_json' => json_encode(array($hardtek_id, $tribe_id))
- ));
-
- $this->crawler = $this->client->request('GET', $url, array(), array(), array(
- 'HTTP_X-Requested-With' => 'XMLHttpRequest',
- ));
-
- $this->isResponseSuccess();
-
- $response_content = json_decode($this->client->getResponse()->getContent(), true);
- $html = $response_content['html'];
-
- $this->isResponseSuccess();
- $this->assertTrue(strpos($html, 'All Is Full Of Pain') !== false);
- $this->assertTrue(strpos($html, 'Heretik System Popof - Resistance') !== false);
- }
-
- }
|