Browse Source

Evolution #788: Ajouter un élément a sa playlist

Bastien Sevajol 11 years ago
parent
commit
764c830192

+ 61 - 3
src/Muzich/CoreBundle/Tests/Controller/PlaylistControllerTest.php View File

7
 use Muzich\CoreBundle\Security\Context as SecurityContext;
7
 use Muzich\CoreBundle\Security\Context as SecurityContext;
8
 use Muzich\CoreBundle\Tests\lib\Security\ContextTestCases;
8
 use Muzich\CoreBundle\Tests\lib\Security\ContextTestCases;
9
 use Muzich\CoreBundle\lib\Collection\ElementCollectionManager;
9
 use Muzich\CoreBundle\lib\Collection\ElementCollectionManager;
10
+use Muzich\CoreBundle\Entity\Playlist;
10
 
11
 
11
 class PlaylistControllerTest extends FunctionalTest
12
 class PlaylistControllerTest extends FunctionalTest
12
 {
13
 {
156
     }
157
     }
157
   }
158
   }
158
   
159
   
159
-  protected function checkPlaylistElements($playlist, $elements)
160
+  protected function checkPlaylistElements(Playlist $playlist, $elements, $exists = true, $check_count = true)
160
   {
161
   {
161
-    $this->assertEquals(count($elements), $this->crawler->filter('li.playlist_element')->count());
162
+    $this->goToPage($this->generateUrl('playlist', array(
163
+      'playlist_id' => $playlist->getId(),
164
+      'user_slug'   => $playlist->getOwner()->getSlug()
165
+    )));
166
+    
167
+    if ($check_count)
168
+      $this->assertEquals(count($elements), $this->crawler->filter('li.playlist_element')->count());
169
+    
162
     foreach ($elements as $element)
170
     foreach ($elements as $element)
163
     {
171
     {
164
-      $this->exist('a[data-id="'.$element->getId().'"]');
172
+      if ($exists)
173
+        $this->exist('a[data-id="'.$element->getId().'"]');
174
+      if (!$exists)
175
+        $this->notExist('a[data-id="'.$element->getId().'"]');
165
     }
176
     }
166
   }
177
   }
167
   
178
   
517
     $this->assertTrue(!is_null($playlist_in_database));
528
     $this->assertTrue(!is_null($playlist_in_database));
518
   }
529
   }
519
   
530
   
531
+  public function testAddPrivateLinks()
532
+  {
533
+    $this->init();
534
+    $this->initReadContextData();
535
+    $this->connectUser('bux', 'toor');
536
+    
537
+    $this->goToPage($this->generateUrl('playlist', array('user_slug' => $this->users['bux']->getSlug(), 'playlist_id' => $this->playlists['bux_1_pub']->getId())));
538
+    $this->exist('div.private_links form');
539
+    $this->exist('a.open_playlist_private_links');
540
+    
541
+    $this->addSomePrivateLinks($this->playlists['bux_1_pub'], $private_links = array(
542
+      'https://soundcloud.com/st-tetik/read-only-memories-g-noush',
543
+      'https://soundcloud.com/triby/triby-extrait-next-liveset',
544
+      'http://blog.bux.fr'
545
+    ));
546
+    $elements = $this->checkElementExistanceAndPresenceInPlaylistWithUrls($private_links, $this->playlists['bux_1_pub']);
547
+    
548
+    $this->checkPlaylistElements($this->playlists['bux_1_pub'], $elements, true, false);
549
+    
550
+    $this->disconnectUser();
551
+    $this->connectUser('paul', 'toor');
552
+    
553
+    $this->checkPlaylistElements($this->playlists['bux_1_pub'], $elements, false, false);
554
+  }
555
+  
556
+  protected function addSomePrivateLinks(Playlist $playlist, $links)
557
+  {
558
+    $this->tests_cases->playlistAddPrivateLinks($playlist, $links);
559
+    $this->isResponseRedirection();
560
+  }
561
+  
562
+  protected function checkElementExistanceAndPresenceInPlaylistWithUrls($urls_to_check, Playlist $playlist)
563
+  {
564
+    $elements = array();
565
+    foreach ($urls_to_check as $url_to_check)
566
+    {
567
+      $element_to_check = $this->findOneBy('Element', array('url' => $url_to_check));
568
+      $this->assertTrue(!is_null($element_to_check));
569
+      $elements[] = $element_to_check;
570
+      $playlist_to_check = $this->findOneBy('Playlist', array('id' => $playlist->getId()));
571
+      $this->assertTrue(!is_null($playlist_to_check));
572
+      $this->assertTrue($playlist_to_check->haveElement($element_to_check));
573
+    }
574
+    
575
+    return $elements;
576
+  }
577
+  
520
 }
578
 }

+ 0 - 6
src/Muzich/CoreBundle/Tests/Controller/ScoreTest.php View File

104
     $this->disconnectUser();
104
     $this->disconnectUser();
105
   }
105
   }
106
   
106
   
107
-  protected function stringResponseIsSuccess($response_string)
108
-  {
109
-    $response_array = json_decode($response_string, true);
110
-    $this->assertEquals('success', $response_array['status']);
111
-  }
112
-  
113
   protected function checkRemoveVoteGood()
107
   protected function checkRemoveVoteGood()
114
   {
108
   {
115
     $this->connectUser('paul');
109
     $this->connectUser('paul');

+ 16 - 3
src/Muzich/CoreBundle/Tests/lib/Security/ContextTestCases.php View File

419
   
419
   
420
   public function playlistDeleteResponseIs($success, $condition)
420
   public function playlistDeleteResponseIs($success, $condition)
421
   {
421
   {
422
-    
423
-    
424
     $this->playlistDelete(0);
422
     $this->playlistDelete(0);
425
-    
426
     return $this->responseSatisfyConditions(
423
     return $this->responseSatisfyConditions(
427
       $this->test->getClient()->getResponse(), 
424
       $this->test->getClient()->getResponse(), 
428
       $success, 
425
       $success, 
559
     );
556
     );
560
   }
557
   }
561
   
558
   
559
+  public function playlistAddPrivateLinks(Playlist $playlist, $links)
560
+  {
561
+    return $this->getAjaxRequestContentResponse(
562
+      'POST',
563
+      $this->test->generateUrl('playlist_add_private_links', array(
564
+        'playlist_id' => $playlist->getId(),
565
+        '_token'     => $this->test->getToken()
566
+      )),
567
+      array(
568
+        'playlist_private_links_form' => array(
569
+          'links' => implode("\n", $links)
570
+        )
571
+      )
572
+    );
573
+  }
574
+  
562
   public function elementAddGoodPoint(Element $element, User $user)
575
   public function elementAddGoodPoint(Element $element, User $user)
563
   {
576
   {
564
     return $this->getAjaxRequestContentResponse(
577
     return $this->getAjaxRequestContentResponse(

+ 6 - 0
src/Muzich/CoreBundle/lib/FunctionalTest.php View File

598
     return $propositions[0];
598
     return $propositions[0];
599
   }
599
   }
600
   
600
   
601
+  protected function stringResponseIsSuccess($response_string)
602
+  {
603
+    $response_array = json_decode($response_string, true);
604
+    $this->assertEquals('success', $response_array['status']);
605
+  }
606
+  
601
 }
607
 }