Browse Source

Evolution #151: Evenements

bastien 13 years ago
parent
commit
a3228d71d9

+ 201 - 0
src/Muzich/CoreBundle/Tests/Controller/EventTest.php View File

@@ -0,0 +1,201 @@
1
+<?php
2
+
3
+namespace Muzich\CoreBundle\Tests\Controller;
4
+
5
+use Muzich\CoreBundle\lib\FunctionalTest;
6
+use Muzich\CoreBundle\Entity\Event;
7
+
8
+class EventTest extends FunctionalTest
9
+{
10
+  
11
+  /**
12
+   * Test de l'inscription d'événement lorsque des commentaires sont ajoutés
13
+   * 
14
+   */
15
+  public function testNewCommentEvent()
16
+  {
17
+    $this->client = self::createClient();
18
+    $this->connectUser('paul', 'toor');
19
+    
20
+    $paul = $this->getUser();
21
+    $bux = $this->getUser('bux');
22
+    
23
+    // Actuellement il n'y a aucun event d'ouvert pour bux (fixtures)
24
+    $result = $this->getDoctrine()->getEntityManager()
25
+      ->createQuery('
26
+        SELECT e FROM MuzichCoreBundle:Event e
27
+        WHERE e.user = :uid AND 
28
+        (e.view = \'FALSE\' OR e.view = \'0\')'
29
+      )
30
+      ->setParameter('uid', $bux->getId())
31
+      ->getArrayResult()
32
+    ;
33
+    $this->assertEquals(count($result), 0);
34
+    
35
+    $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
36
+      ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
37
+    ;
38
+    
39
+    // paul écrit un commentaire sur un des elements a bux
40
+    $this->crawler = $this->client->request(
41
+      'POST', 
42
+      $this->generateUrl('ajax_add_comment', array(
43
+        'element_id' => $element->getId(),
44
+        'token'      => $paul->getPersonalHash()
45
+      )), 
46
+      array(
47
+          'comment' => "Du coup ce com va emettre un event"
48
+      ), 
49
+      array(), 
50
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
51
+    );
52
+    
53
+    $this->isResponseSuccess();
54
+    
55
+    $response = json_decode($this->client->getResponse()->getContent(), true);
56
+    $this->assertEquals($response['status'], 'success');
57
+    
58
+    // bux a maintenant un event en base
59
+    $result = $this->getDoctrine()->getEntityManager()
60
+      ->createQuery('
61
+        SELECT e FROM MuzichCoreBundle:Event e
62
+        WHERE e.user = :uid AND 
63
+        (e.view = \'FALSE\' OR e.view = \'0\')'
64
+      )
65
+      ->setParameter('uid', $bux->getId())
66
+      ->getArrayResult()
67
+    ;
68
+    $this->assertEquals(count($result), 1);
69
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
70
+    $this->assertEquals($result[0]['count'], 1);
71
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
72
+    
73
+    // paul écrit un autre commentaire sur un deuxième element
74
+    $element_2 = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
75
+      ->findOneByName('AZYD AZYLUM Live au Café Provisoire')
76
+    ;
77
+    
78
+    $this->crawler = $this->client->request(
79
+      'POST', 
80
+      $this->generateUrl('ajax_add_comment', array(
81
+        'element_id' => $element_2->getId(),
82
+        'token'      => $paul->getPersonalHash()
83
+      )), 
84
+      array(
85
+          'comment' => "Du coup ce com va aussi emettre un event"
86
+      ), 
87
+      array(), 
88
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
89
+    );
90
+    
91
+    $this->isResponseSuccess();
92
+    
93
+    $response = json_decode($this->client->getResponse()->getContent(), true);
94
+    $this->assertEquals($response['status'], 'success');
95
+    
96
+    // bux a toujours 1 seul event en base
97
+    $result = $this->getDoctrine()->getEntityManager()
98
+      ->createQuery('
99
+        SELECT e FROM MuzichCoreBundle:Event e
100
+        WHERE e.user = :uid AND 
101
+        (e.view = \'FALSE\' OR e.view = \'0\')'
102
+      )
103
+      ->setParameter('uid', $bux->getId())
104
+      ->getArrayResult()
105
+    ;
106
+    $this->assertEquals(count($result), 1);
107
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
108
+    // Mais il dénombre deux elements
109
+    $this->assertEquals($result[0]['count'], 2);
110
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId(), (string)$element_2->getId())));
111
+    
112
+    // Par contre si paul écrit un com sur un de ces deux éléments, pas de changement 
113
+    // au niveau de l'event
114
+    $this->crawler = $this->client->request(
115
+      'POST', 
116
+      $this->generateUrl('ajax_add_comment', array(
117
+        'element_id' => $element_2->getId(),
118
+        'token'      => $paul->getPersonalHash()
119
+      )), 
120
+      array(
121
+          'comment' => "Du coup ce com va aussi emettre un event"
122
+      ), 
123
+      array(), 
124
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
125
+    );
126
+    
127
+    $this->isResponseSuccess();
128
+    
129
+    $response = json_decode($this->client->getResponse()->getContent(), true);
130
+    $this->assertEquals($response['status'], 'success');
131
+    
132
+    // bux a toujours 1 seul event en base
133
+    $result = $this->getDoctrine()->getEntityManager()
134
+      ->createQuery('
135
+        SELECT e FROM MuzichCoreBundle:Event e
136
+        WHERE e.user = :uid AND 
137
+        (e.view = \'FALSE\' OR e.view = \'0\')'
138
+      )
139
+      ->setParameter('uid', $bux->getId())
140
+      ->getArrayResult()
141
+    ;
142
+    $this->assertEquals(count($result), 1);
143
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
144
+    // Mais il dénombre deux elements
145
+    $this->assertEquals($result[0]['count'], 2);
146
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId(), (string)$element_2->getId())));
147
+    
148
+    // Nous allons maintenant consulter ces events avec bux
149
+    $this->disconnectUser();
150
+    $this->connectUser('bux', 'toor');
151
+    
152
+    // bux doit pouvoir voir dans la barre de droite qu'il a deux elements avec de
153
+    // nouveaux commentaire
154
+    $this->exist('div#events div.comments a span.new_comments:contains("2")');
155
+    
156
+    // Il y a d'ailleurs un lien pour les afficher
157
+    $url = $this->generateUrl('event_view_elements', array('event_id' => $result[0]['id']));
158
+    $this->exist('div#events div.comments a[href="'.$url.'"]');
159
+    
160
+    // On se rend sur ce lien
161
+    $this->crawler = $this->client->request('GET', $url);
162
+    $this->isResponseRedirection();
163
+    $this->followRedirection();
164
+    $this->isResponseSuccess();
165
+    
166
+    // nous somme sur la page home
167
+    $this->exist('ul.elements');
168
+    // et on peux voir les deux éléments qui ont reçu le nouveau commentaire
169
+    $this->exist('li#element_'.$element->getId());
170
+    $this->exist('li#element_'.$element_2->getId());
171
+    // On voit egallement le bouton dans les filtres
172
+    // /!\ la je ne teste pas si il est affiché ou caché /!\
173
+    $url = $this->generateUrl('ajax_filter_remove_ids');
174
+    $this->exist('div.more_filters a[href="'.$url.'"]');
175
+    
176
+    // Du coup on clique dessus pour revenir a un etat normal
177
+    $this->crawler = $this->client->request(
178
+      'GET', 
179
+      $url, 
180
+      array(), 
181
+      array(), 
182
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
183
+    );
184
+    
185
+    $this->isResponseSuccess();
186
+    
187
+    $response = json_decode($this->client->getResponse()->getContent(), true);
188
+    $this->assertEquals($response['status'], 'success');
189
+    
190
+    // la réponse contient bien un des éléments qui n'a pas été commenté tout a l'heure
191
+    $this->assertTrue(!is_null(strpos($response['html'], 'Babylon Pression - Des Tasers et des Pauvres')));
192
+    
193
+    // Et si on réaffiche la page home, le filtre a bien été réinitialisé
194
+    $this->crawler = $this->client->request('GET', $this->generateUrl('home'));
195
+    
196
+    $this->isResponseSuccess();
197
+    $this->exist('li.element:contains("Babylon Pression - Des Tasers et des Pauvres")');
198
+    
199
+  }
200
+  
201
+}

+ 2 - 2
src/Muzich/UserBundle/Resources/views/Info/bar.html.twig View File

@@ -15,11 +15,11 @@
15 15
             class="view_elements_event"
16 16
           >
17 17
             <img src="{{ asset('bundles/muzichcore/img/1332286007_comments_reply.png') }}" alt="comments" />
18
-            <span>{{ events[event_const('TYPE_COMMENT_ADDED_ELEMENT')].count }}</span>
18
+            <span class="new_comments">{{ events[event_const('TYPE_COMMENT_ADDED_ELEMENT')].count }}</span>
19 19
           </a>
20 20
         {% else %}
21 21
           <img title="{{ 'events.new_comments.no'|trans({}, 'users') }}" src="{{ asset('bundles/muzichcore/img/1332286007_comments_reply.png') }}" alt="comments" />
22
-          <span>0</span>
22
+          <span class="new_comments">0</span>
23 23
         {% endif %}
24 24
     </div>
25 25