Browse Source

tests unitaires sur ElementManager

bastien 13 years ago
parent
commit
d6ca0c8ccb

+ 1 - 1
src/Muzich/CoreBundle/Repository/ElementRepository.php View File

@@ -132,7 +132,7 @@ class ElementRepository extends EntityRepository
132 132
       $where_user
133 133
       $where_group
134 134
       $where_favorite
135
-      ORDER BY e.created DESC "
135
+      ORDER BY e.created, e.name DESC "
136 136
     ;
137 137
     $params['uid'] = $user_id;
138 138
     

+ 61 - 0
src/Muzich/CoreBundle/Tests/ElementFactory/ElementFactoryTest.php View File

@@ -0,0 +1,61 @@
1
+<?php
2
+
3
+namespace Muzich\CoreBundle\Tests\Searcher;
4
+
5
+use Muzich\CoreBundle\lib\UnitTest;
6
+use Muzich\CoreBundle\Entity\Element;
7
+use Muzich\CoreBundle\ElementFactory\ElementManager;
8
+use Doctrine\Common\Collections\ArrayCollection;
9
+
10
+class ElementFactoryTest extends UnitTest
11
+{  
12
+  
13
+  /**
14
+   * Test du fonctionnement du l'usine
15
+   */
16
+  public function testEngine()
17
+  {
18
+    $r = $this->getDoctrine();
19
+    
20
+    $bux = $r->getRepository('MuzichCoreBundle:User')
21
+      ->findOneByUsername('bux')
22
+    ;
23
+    
24
+    $hardtek = $r->getRepository('MuzichCoreBundle:Tag')->findOneByName('Hardtek');
25
+    $tribe = $r->getRepository('MuzichCoreBundle:Tag')->findOneByName('Tribe');
26
+    
27
+    $youtube_width = '425';
28
+    $youtube_height = '350';
29
+    
30
+    $data = array(
31
+      'name'    => 'Mon bel element',
32
+      'url'     => 'http://www.youtube.com/watch?v=WC8qb_of04E',
33
+      'tags'    => array($hardtek->getId(), $tribe->getId()),
34
+      'group'   => ''
35
+    );
36
+    
37
+    $element = new Element();
38
+    
39
+    $factory = new ElementManager($element, $r->getEntityManager(), $this->_container);
40
+    $factory->proceedFill($data, $bux);
41
+    
42
+    $tags = new ArrayCollection();
43
+    $tags->add($hardtek);
44
+    $tags->add($tribe);
45
+    
46
+    $url = 'http://www.youtube.com/v/WC8qb_of04E&rel=1';
47
+    
48
+    $this->assertEquals($element->getName(), 'Mon bel element');
49
+    $this->assertEquals($element->getUrl(), 'http://www.youtube.com/watch?v=WC8qb_of04E');
50
+    $this->assertEquals($element->getTags(), $tags);
51
+    $this->assertEquals($element->getEmbed(), 
52
+      '<object width="'.$youtube_width.'" height="'.$youtube_height.'" >'
53
+     .'<param name="movie" value="'.$url.'"></param><param name="wmode" value="transparent">'
54
+     .'</param><embed src="'.$url.'" type="application/x-shockwave-flash" '
55
+     .'wmode="transparent" width="'.$youtube_width.'" height="'.$youtube_height.'"></embed></object>'
56
+    );
57
+    
58
+    
59
+  }
60
+  
61
+}

+ 113 - 2
src/Muzich/CoreBundle/Tests/Searcher/ElementSearcherTest.php View File

@@ -61,8 +61,8 @@ class ElementSearcherTest extends UnitTest
61 61
     ;
62 62
     $es = new ElementSearcher();
63 63
     $es->init(array(
64
-        'user_id'   => $jean->getId(),
65
-        'count'     => 20
64
+      'user_id'   => $jean->getId(),
65
+      'count'     => 20
66 66
     ));
67 67
     
68 68
     // On récupére avec un requte standart ce que devra retourner l'objet de
@@ -83,5 +83,116 @@ class ElementSearcherTest extends UnitTest
83 83
     // Maintenant on compare
84 84
     $this->assertEquals($query_results, $searcher_results);
85 85
     
86
+    /*
87
+     * Contrôle de sortie des favoris d'un user (paul)
88
+     */
89
+    
90
+    $paul = $r->getRepository('MuzichCoreBundle:User')
91
+      ->findOneByUsername('paul')
92
+    ;
93
+    $es = new ElementSearcher();
94
+    $es->init(array(
95
+      'user_id'   => $paul->getId(),
96
+      'favorite'  => true,
97
+      'count'     => 20
98
+    ));
99
+    
100
+    $query_results = $r->getEntityManager()
101
+      ->createQuery("SELECT e
102
+      FROM MuzichCoreBundle:Element e
103
+      JOIN e.elements_favorites fav2
104
+      WHERE fav2.user = :fuid
105
+      ORDER BY e.created, e.name DESC")
106
+      ->setParameter('fuid', $paul->getId())
107
+      ->setMaxResults(20)
108
+      ->getResult()
109
+    ;
110
+    
111
+    // Les résultats de la recherche
112
+    $searcher_results = $es->getElements($r, $paul->getId());
113
+    
114
+    // Maintenant on compare
115
+    $this->assertEquals($query_results, $searcher_results);
116
+    
117
+    /*
118
+     * Contrôle de sortie d'un affichage public, avec tags
119
+     */
120
+    
121
+    $hardtek = $r->getRepository('MuzichCoreBundle:Tag')->findOneByName('Hardtek');
122
+    $tribe = $r->getRepository('MuzichCoreBundle:Tag')->findOneByName('Tribe');
123
+    
124
+    $es = new ElementSearcher();
125
+    $es->init(array(
126
+      'network'   => ElementSearcher::NETWORK_PUBLIC,
127
+      'tags'      => array(
128
+        $hardtek->getId(),
129
+        $tribe->getId()
130
+      ),
131
+      'count'     => 20
132
+    ));
133
+        
134
+    $query_results = $r->getEntityManager()
135
+      ->createQuery("SELECT e
136
+      FROM MuzichCoreBundle:Element e 
137
+      LEFT JOIN e.tags t 
138
+      WHERE (t.id = :tidHardtek OR t.id = :tidTribe)
139
+      ORDER BY e.created, e.name DESC")
140
+      ->setParameters(array(
141
+        'tidHardtek' => $hardtek->getId(),
142
+        'tidTribe'   => $tribe->getId()
143
+      ))
144
+      ->setMaxResults(20)
145
+      ->getResult()
146
+    ;
147
+    
148
+    // Les résultats de la recherche
149
+    $searcher_results = $es->getElements($r, $paul->getId());
150
+    
151
+    // Maintenant on compare
152
+    $this->assertEquals($query_results, $searcher_results);
153
+    
154
+//    /*
155
+//     * Contrôle de sortie d'un affichage réseau personel, avec tags
156
+//     */
157
+//    
158
+//    $hardtek = $r->getRepository('MuzichCoreBundle:Tag')->findOneByName('Hardtek');
159
+//    $tribe = $r->getRepository('MuzichCoreBundle:Tag')->findOneByName('Tribe');
160
+//    
161
+//    $es = new ElementSearcher();
162
+//    $es->init(array(
163
+//      'network'   => ElementSearcher::NETWORK_PERSONAL,
164
+//      'tags'      => array(
165
+//        $hardtek->getId(),
166
+//        $tribe->getId()
167
+//      ),
168
+//      'count'     => 20
169
+//    ));
170
+//    
171
+//    $query_results = $r->getEntityManager()
172
+//      ->createQuery("SELECT e, et, t2, eu, g
173
+//      FROM MuzichCoreBundle:Element e 
174
+//      LEFT JOIN e.group g 
175
+//      LEFT JOIN e.type et 
176
+//      LEFT JOIN e.tags t 
177
+//      LEFT JOIN e.tags t2 
178
+//      JOIN e.owner eu  LEFT JOIN eu.followers_users f LEFT JOIN g.followers gf
179
+//      WHERE (t.id = :tidHardtek OR t.id = :tidTribe)
180
+//       AND (f.follower = :userid OR gf.follower = :useridg)
181
+//      ORDER BY e.created, e.name DESC")
182
+//      ->setParameters(array(
183
+//        'tidHardtek' => $hardtek->getId(),
184
+//        'tidTribe'   => $tribe->getId(),
185
+//        'userid'     => $bux->getId(),
186
+//        'useridg'    => $bux->getId()
187
+//      ))
188
+//      ->setMaxResults(20)
189
+//      ->getResult()
190
+//    ;
191
+//    
192
+//    // Les résultats de la recherche
193
+//    $searcher_results = $es->getElements($r, $paul->getId());
194
+//    
195
+//    // Maintenant on compare
196
+//    $this->assertEquals($query_results, $searcher_results);
86 197
   }
87 198
 }