123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746 |
- <?php
-
- namespace Muzich\CoreBundle\Tests\Controller;
-
- use Muzich\CoreBundle\lib\FunctionalTest;
- use Muzich\CoreBundle\Entity\Event;
- use Muzich\CoreBundle\Managers\CommentsManager;
-
- class EventTest extends FunctionalTest
- {
-
- /**
- * Test de l'inscription d'événement lorsque des commentaires sont ajoutés
- *
- */
- public function testNewCommentEvent()
- {
- $this->client = self::createClient();
- $this->connectUser('paul', 'toor');
-
- $paul = $this->getUser();
- $bux = $this->getUser('bux');
-
- // Actuellement il n'y a aucun event d'ouvert pour bux (fixtures)
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- // paul écrit un commentaire sur un des elements a bux
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element->getId(),
- 'token' => $paul->getPersonalHash()
- )),
- array(
- 'comment' => "Du coup ce com va emettre un event"
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // bux a maintenant un event en base
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('
- SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
-
- // paul écrit un autre commentaire sur un deuxième element
- $element_2 = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('AZYD AZYLUM Live au Café Provisoire')
- ;
-
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element_2->getId(),
- 'token' => $paul->getPersonalHash()
- )),
- array(
- 'comment' => "Du coup ce com va aussi emettre un event"
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // bux a toujours 1 seul event en base
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('
- SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- // Mais il dénombre deux elements
- $this->assertEquals($result[0]['count'], 2);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId(), (string)$element_2->getId())));
-
- // Par contre si paul écrit un com sur un de ces deux éléments, pas de changement
- // au niveau de l'event
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element_2->getId(),
- 'token' => $paul->getPersonalHash()
- )),
- array(
- 'comment' => "Du coup ce com va aussi emettre un event"
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // bux a toujours 1 seul event en base
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- // Mais il dénombre deux elements
- $this->assertEquals($result[0]['count'], 2);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId(), (string)$element_2->getId())));
-
- // Nous allons maintenant consulter ces events avec bux
- $this->disconnectUser();
- $this->connectUser('bux', 'toor');
-
- // bux doit pouvoir voir dans la barre de droite qu'il a deux elements avec de
- // nouveaux commentaire
- $this->exist('div#events div.comments a span.new_comments:contains("2")');
-
- // Il y a d'ailleurs un lien pour les afficher
- $url = $this->generateUrl('event_view_elements', array('event_id' => $result[0]['id']));
- $this->exist('div#events div.comments a[href="'.$url.'"]');
-
- // On se rend sur ce lien
- $this->crawler = $this->client->request('GET', $url);
- $this->isResponseRedirection();
- $this->followRedirection();
- $this->isResponseSuccess();
-
- // nous somme sur la page home
- $this->exist('ul.elements');
- // et on peux voir les deux éléments qui ont reçu le nouveau commentaire
- $this->exist('li#element_'.$element->getId());
- $this->exist('li#element_'.$element_2->getId());
- // On voit egallement le bouton dans les filtres
- // /!\ la je ne teste pas si il est affiché ou caché /!\
- $url = $this->generateUrl('ajax_filter_remove_ids');
- $this->exist('div.more_filters a[href="'.$url.'"]');
-
- // L'objet Event ne doit plus être en base maintenant qu'il a été vu
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- // Du coup on clique dessus pour revenir a un etat normal
- $this->crawler = $this->client->request(
- 'GET',
- $url,
- array(),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // la réponse contient bien un des éléments qui n'a pas été commenté tout a l'heure
- $this->assertTrue(!is_null(strpos($response['html'], 'Babylon Pression - Des Tasers et des Pauvres')));
-
- // Et si on réaffiche la page home, le filtre a bien été réinitialisé
- $this->crawler = $this->client->request('GET', $this->generateUrl('home'));
-
- $this->isResponseSuccess();
- $this->exist('li.element:contains("Babylon Pression - Des Tasers et des Pauvres")');
-
- }
-
- public function testFavoriteAdded()
- {
- $this->client = self::createClient();
- $this->connectUser('paul', 'toor');
-
- $paul = $this->getUser();
- $bux = $this->getUser('bux');
-
- // Actuellement il n'y a aucun event d'ouvert pour bux (fixtures)
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- // Ajout d'un élément en favoris
- // Il ajoute cet élément en favoris
- $url = $this->generateUrl('favorite_add', array(
- 'id' => $element->getId(),
- 'token' => $paul->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' => $paul->getId(),
- 'element' => $element->getId()
- ));
-
- $this->assertTrue(!is_null($fav));
-
- // bux a maintenant un event en base
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('
- SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_FAV_ADDED_ELEMENT);
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
-
- // On enlève des favoris
- $url = $this->generateUrl('favorite_remove', array(
- 'id' => $element->getId(),
- 'token' => $paul->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' => $paul->getId(),
- 'element' => $element->getId()
- ));
-
- $this->assertTrue(is_null($fav));
-
- // bux a toujours qu'un event avec un seul element signalé.
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('
- SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bux->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_FAV_ADDED_ELEMENT);
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
-
- // Pour le moment pas de tests supplémentaire comme mettre de nouveaux favoris
- // ou consulter la liste des éléments concernés. Il faudrait coder ces test certe.
- // Mais la refactorisation du code fait qu'il n'y a que le type (Event) de diféfrent.
- // donc a coder (tests) mais pas urgent a l'isntant.
- }
-
- /**
- * Ce test teste le déclenchement d'événement qui s'effctue lorsque un
- * nouveau commentaire est écrit sur un élément que l'on a choisis de "suivre"
- *
- */
- public function testNewCommentEventOnOtherElement()
- {
- $this->client = self::createClient();
- $this->connectUser('paul', 'toor');
-
- $paul = $this->getUser();
-
- // Actuellement il n'y a aucun event d'ouvert pour paul (fixtures)
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $paul->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- // paul écrit un commentaire sur un des elements a bux
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element->getId(),
- 'token' => $paul->getPersonalHash()
- )),
- array(
- 'comment' => "Je choisis en commentant de suivre l'élément",
- 'follow' => true
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // On vérifie que paul fait bien partis des suiveurs
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- $cm = new CommentsManager($element->getComments());
- $this->assertTrue($cm->userFollow($paul->getId()));
-
- // joelle va egallement suivre cet élément
- $this->disconnectUser();
-
- $this->connectUser('joelle', 'toor');
-
- $joelle = $this->getUser();
-
- // Actuellement il n'y a aucun event d'ouvert pour joelle (fixtures)
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $joelle->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- // joelle écrit un commentaire sur un des elements a bux
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element->getId(),
- 'token' => $joelle->getPersonalHash()
- )),
- array(
- 'comment' => "Je choisis en commentant de suivre l'élément (joelle)",
- 'follow' => true
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // On vérifie que jioelle fait bien partis des suiveurs
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- $cm = new CommentsManager($element->getComments());
- $this->assertTrue($cm->userFollow($joelle->getId()));
-
- // bux va aller commenter son élément
- $this->disconnectUser();
-
- $this->connectUser('bux', 'toor');
-
- $bux = $this->getUser();
-
- // Actuellement il n'y a aucun event d'ouvert pour bux (fixtures)
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $joelle->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- // bux écrit un commentaire sur un des elements a bux
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element->getId(),
- 'token' => $bux->getPersonalHash()
- )),
- array(
- 'comment' => "Voila le com qui declenche les événemetns chez paul et joelle"
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // Paul et Joelle on maintenant des events
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid AND e.type = :type'
- )
- ->setParameters(array(
- 'uid' => $paul->getId(),
- 'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
- ))
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- //
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
-
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid AND e.type = :type'
- )
- ->setParameters(array(
- 'uid' => $joelle->getId(),
- 'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
- ))
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- //
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
-
- // bux va envoyer un deuxième commentaire
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element->getId(),
- 'token' => $bux->getPersonalHash()
- )),
- array(
- 'comment' => "un nouveau com"
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // Pas de mouvement coté événements
- $result_paul = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid AND e.type = :type'
- )
- ->setParameters(array(
- 'uid' => $paul->getId(),
- 'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
- ))
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- //
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
-
- $result_jo = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid AND e.type = :type'
- )
- ->setParameters(array(
- 'uid' => $joelle->getId(),
- 'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
- ))
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- //
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
-
- // Paul va aller consulter son event
- $this->disconnectUser();
- $this->connectUser('paul', 'toor');
-
- $url = $this->generateUrl('event_view_elements', array('event_id' => $result_paul[0]['id']));
- // il le consulte
- $this->crawler = $this->client->request('GET', $url);
- $this->isResponseRedirection();
- $this->followRedirection();
- $this->isResponseSuccess();
-
- // L'objet Event ne doit plus être en base maintenant qu'il a été vu
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $paul->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- // paul désactive le fait qu'il veut être avertis
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element->getId(),
- 'token' => $paul->getPersonalHash()
- )),
- array(
- 'comment' => "ze veux plus",
- 'follow' => false
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // On vérifie que paul fait bien partis des suiveurs
- $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
- ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
- ;
-
- $cm = new CommentsManager($element->getComments());
- $this->assertFalse($cm->userFollow($paul->getId()));
-
- // au tour de joelle de consulter son event
- $this->disconnectUser();
- $this->connectUser('joelle', 'toor');
-
- $url = $this->generateUrl('event_view_elements', array('event_id' => $result_jo[0]['id']));
- // il le consulte
- $this->crawler = $this->client->request('GET', $url);
- $this->isResponseRedirection();
- $this->followRedirection();
- $this->isResponseSuccess();
-
- // L'objet Event ne doit plus être en base maintenant qu'il a été vu
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $joelle->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- // joelle garde son follow sur cet élément
-
- // bux va de nouveau metre un commentaire
- $this->disconnectUser();
-
- $this->connectUser('bux', 'toor');
-
- $bux = $this->getUser();
-
- // bux écrit un commentaire sur un des elements a bux
- $this->crawler = $this->client->request(
- 'POST',
- $this->generateUrl('ajax_add_comment', array(
- 'element_id' => $element->getId(),
- 'token' => $bux->getPersonalHash()
- )),
- array(
- 'comment' => "ce com va declencher un event chez joelle mais pas chez paul"
- ),
- array(),
- array('HTTP_X-Requested-With' => 'XMLHttpRequest')
- );
-
- $this->isResponseSuccess();
-
- $response = json_decode($this->client->getResponse()->getContent(), true);
- $this->assertEquals($response['status'], 'success');
-
- // Paul et Joelle on maintenant des events
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid AND e.type = :type'
- )
- ->setParameters(array(
- 'uid' => $paul->getId(),
- 'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
- ))
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid AND e.type = :type'
- )
- ->setParameters(array(
- 'uid' => $joelle->getId(),
- 'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
- ))
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
- //
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
- }
-
- public function testFollowEvent()
- {
- $this->client = self::createClient();
- $this->connectUser('bux', 'toor');
-
- $bux = $this->getUser();
- $bob = $this->getUser('bob');
-
- // Actuellement il n'y a aucun event d'ouvert pour paul (fixtures)
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bob->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
-
- // On tente de récupérer l'entité FollowUser
- $FollowUser = $this->getDoctrine()->getRepository('MuzichCoreBundle:FollowUser')
- ->findOneBy(array(
- 'follower' => $bux->getId(),
- 'followed' => $bob->getId()
- ))
- ;
-
- // Mais celle-ci doit-être innexistante
- $this->assertTrue(is_null($FollowUser));
-
- // On va suivre bob
- $url_follow = $this->generateUrl('follow', array(
- 'type' => 'user',
- 'id' => $bob->getId(),
- 'token' => $bux->getPersonalHash()
- ));
-
- $this->crawler = $this->client->request('GET', $url_follow);
-
- $this->isResponseRedirection();
- $this->followRedirection();
- $this->isResponseSuccess();
-
- // Désormais bob doit avoir un event
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid AND e.type = :type'
- )
- ->setParameters(array(
- 'uid' => $bob->getId(),
- 'type' => Event::TYPE_USER_FOLLOW
- ))
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 1);
- $this->assertEquals($result[0]['type'], Event::TYPE_USER_FOLLOW);
- $this->assertEquals($result[0]['count'], 1);
- $this->assertEquals($result[0]['ids'], json_encode(array((string)$bux->getId())));
-
- // On va se connecter avec bob
- $this->disconnectUser();
- $this->connectUser('bob', 'toor');
-
- // bob doit pouvoir voir dans la barre de droite l'event
- $this->exist('div#events div.follows a span.new_follows:contains("1")');
-
- // Il y a d'ailleurs un lien pour les afficher
- $url = $this->generateUrl('mynetwork_index', array('event_id' => $result[0]['id']));
- $this->exist('div#events div.follows a[href="'.$url.'"]');
-
- // On se rend sur ce lien
- $this->crawler = $this->client->request('GET', $url);
- $this->isResponseSuccess();
-
- // On peux voir le lien vers bux en class 'new'
- $this->exist('ul#followers_users li.new:contains(\'bux\')');
-
- // L'event n'existe d'ailleurs plus en base
- $result = $this->getDoctrine()->getEntityManager()
- ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
- WHERE e.user = :uid'
- )
- ->setParameter('uid', $bob->getId())
- ->getArrayResult()
- ;
- $this->assertEquals(count($result), 0);
- }
-
- }
|