PlaylistTest.php 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. namespace Muzich\CoreBundle\Tests\Controller;
  3. use Muzich\CoreBundle\lib\FunctionalTest;
  4. use Muzich\CoreBundle\Managers\PlaylistManager;
  5. use Muzich\CoreBundle\Entity\Element;
  6. use Muzich\CoreBundle\Entity\Playlist;
  7. class ElementTest extends Element
  8. {
  9. public function __construct($id, $name)
  10. {
  11. $this->id = $id;
  12. $this->name = $name;
  13. }
  14. }
  15. class PlaylistEntityTest extends Playlist
  16. {
  17. public function setId($id)
  18. {
  19. $this->id = $id;
  20. }
  21. }
  22. class PlaylistTest extends FunctionalTest
  23. {
  24. protected $users = array();
  25. protected $elements = array();
  26. protected $playlist_manager = null;
  27. protected $playlists = array();
  28. protected function init()
  29. {
  30. $this->client = self::createClient();
  31. $this->users['bux'] = $this->getUser('bux');
  32. $this->users['bob'] = $this->getUser('bob');
  33. $this->elements[1] = new ElementTest(1, 'Element 1');
  34. $this->elements[2] = new ElementTest(2, 'Element 2');
  35. $this->elements[3] = new ElementTest(3, 'Element 3');
  36. $this->elements[4] = new ElementTest(4, 'Element 4');
  37. $this->playlist_manager = new PlaylistManager($this->getEntityManager());
  38. $this->playlists['bux'] = new PlaylistEntityTest();
  39. $this->playlists['bux']->setName('Una playlist!');
  40. $this->playlists['bux']->setOwner($this->users['bux']);
  41. $this->playlists['bux']->setId(1);
  42. }
  43. public function testPlaylistCreationAndPick()
  44. {
  45. $this->init();
  46. $this->addElementsToBuxPlaylist(array($this->elements[1], $this->elements[2], $this->elements[3], $this->elements[4]));
  47. $this->checkElementsInBuxPlaylist(array($this->elements[1], $this->elements[2], $this->elements[3], $this->elements[4]));
  48. $this->removeAnElementFormBuxPlaylist($this->elements[3]);
  49. $this->checkElementsInBuxPlaylist(array($this->elements[1], $this->elements[2], $this->elements[4]));
  50. $this->bobPickBuxPlaylist();
  51. $this->checkBobPickedPlaylists(array($this->playlists['bux']));
  52. $this->bobRemoveBuxPickedPlaylist();
  53. $this->checkBobPickedPlaylists(array());
  54. $this->bobRemoveBuxPickedPlaylist();
  55. $this->bobCopyBuxPlaylist();
  56. $this->checkCopyedPlaylist();
  57. }
  58. protected function addElementsToBuxPlaylist($elements)
  59. {
  60. foreach ($elements as $element)
  61. {
  62. $this->playlists['bux']->addElement($element);
  63. }
  64. }
  65. protected function checkElementsInBuxPlaylist($elements)
  66. {
  67. $this->assertEquals(count($elements), count($this->playlists['bux']->getElements()));
  68. foreach ($elements as $element)
  69. {
  70. $this->playlists['bux']->haveElement($element);
  71. }
  72. }
  73. protected function removeAnElementFormBuxPlaylist($element)
  74. {
  75. $this->playlists['bux']->removeElement($element);
  76. }
  77. protected function bobPickBuxPlaylist()
  78. {
  79. $this->playlist_manager->addPickedPlaylistToUser($this->users['bob'], $this->playlists['bux']);
  80. }
  81. protected function checkBobPickedPlaylists($playlists)
  82. {
  83. $this->assertEquals(count($playlists), count($this->users['bob']->getPickedsPlaylists()));
  84. foreach ($playlists as $playlist)
  85. {
  86. $this->assertTrue($this->playlistIsInPlaylists($playlist, $this->users['bob']->getPickedsPlaylists()));
  87. }
  88. }
  89. protected function playlistIsInPlaylists($playlist_searched, $playlists)
  90. {
  91. foreach ($playlists as $playlist)
  92. {
  93. if ($playlist->getId() == $playlist_searched->getId())
  94. {
  95. return true;
  96. }
  97. }
  98. return false;
  99. }
  100. protected function bobRemoveBuxPickedPlaylist()
  101. {
  102. $this->playlist_manager->removePickedPlaylistToUser($this->users['bob'], $this->playlists['bux']);
  103. }
  104. protected function bobCopyBuxPlaylist()
  105. {
  106. $this->playlist_manager->copyPlaylist($this->users['bob'], $this->playlists['bux']);
  107. }
  108. protected function checkCopyedPlaylist()
  109. {
  110. $this->assertEquals(2, count($this->users['bob']->getPlaylistsOwneds()));
  111. $bob_playlists = $this->users['bob']->getPlaylistsOwneds();
  112. $bux_playlist_copys = $this->playlists['bux']->getCopys();
  113. $this->assertCount(1, $bux_playlist_copys);
  114. $this->assertEquals($bux_playlist_copys[0]->getName(), $bob_playlists[1]->getName());
  115. foreach (array($this->elements[1], $this->elements[2], $this->elements[4]) as $element)
  116. {
  117. $this->assertTrue($bob_playlists[1]->haveElement($element));
  118. }
  119. }
  120. //public function testPlaylistDeletion()
  121. //{
  122. // $this->init();
  123. //
  124. // $this->bobPickBuxPlaylist();
  125. // $this->checkBobPickedPlaylists(array($this->playlists['bux']));
  126. //
  127. // $this->playlist_manager->deletePlaylist($this->playlists['bux']);
  128. //
  129. // $this->checkBobPickedPlaylists(array());
  130. // $this->checkBobCopyedPlaylist(array($this->playlists['bux']));
  131. //}
  132. //
  133. //protected function checkBobCopyedPlaylist($playlists)
  134. //{
  135. // $this->assertEquals(count($playlists), count($this->users['bob']->getPlaylistsOwneds()));
  136. // $bob_playlists = $this->users['bob']->getPlaylistsOwneds();
  137. //
  138. // foreach ($playlists as $playlist)
  139. // {
  140. // $this->assertTrue($this->playlistIsInPlaylists($playlist, $bob_playlists));
  141. // }
  142. //}
  143. }