SortableGroupTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace Gedmo\Sortable;
  3. use Doctrine\Common\EventManager;
  4. use Tool\BaseTestCaseORM;
  5. use Sortable\Fixture\Transport\Car;
  6. use Sortable\Fixture\Transport\Bus;
  7. use Sortable\Fixture\Transport\Vehicle;
  8. use Sortable\Fixture\Transport\Engine;
  9. /**
  10. * These are tests for sluggable behavior
  11. *
  12. * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  13. * @package Gedmo.Sluggable
  14. * @link http://www.gediminasm.org
  15. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  16. */
  17. class SortableGroupTest extends BaseTestCaseORM
  18. {
  19. const CAR = "Sortable\Fixture\Transport\Car";
  20. const BUS = "Sortable\Fixture\Transport\Bus";
  21. const VEHICLE = "Sortable\Fixture\Transport\Vehicle";
  22. const ENGINE = "Sortable\Fixture\Transport\Engine";
  23. protected function setUp()
  24. {
  25. parent::setUp();
  26. $evm = new EventManager;
  27. $evm->addEventSubscriber(new SortableListener);
  28. $this->getMockSqliteEntityManager($evm);
  29. /*$this->getMockCustomEntityManager(array(
  30. 'driver' => 'pdo_mysql',
  31. 'dbname' => 'test',
  32. 'host' => '127.0.0.1',
  33. 'user' => 'root',
  34. 'password' => 'nimda'
  35. ), $evm);*/
  36. }
  37. /**
  38. * @test
  39. */
  40. public function shouldBeAbleToRemove()
  41. {
  42. $this->populate();
  43. $carRepo = $this->em->getRepository(self::CAR);
  44. $audi80 = $carRepo->findOneByTitle('Audi-80');
  45. $this->assertEquals(0, $audi80->getSortByEngine());
  46. $audi80s = $carRepo->findOneByTitle('Audi-80s');
  47. $this->assertEquals(1, $audi80s->getSortByEngine());
  48. $icarus = $this->em->getRepository(self::BUS)->findOneByTitle('Icarus');
  49. $this->assertEquals(2, $icarus->getSortByEngine());
  50. $this->em->remove($audi80);
  51. $this->em->flush();
  52. }
  53. protected function getUsedEntityFixtures()
  54. {
  55. return array(
  56. self::VEHICLE,
  57. self::CAR,
  58. self::ENGINE,
  59. self::BUS
  60. );
  61. }
  62. private function populate()
  63. {
  64. // engines
  65. $v8 = new Engine;
  66. $v8->setType('V8');
  67. $v8->setValves(8);
  68. $this->em->persist($v8);
  69. $v6 = new Engine;
  70. $v6->setType('V6');
  71. $v6->setValves(8);
  72. $this->em->persist($v6);
  73. $this->em->flush();
  74. // cars
  75. $audi80 = new Car;
  76. $audi80->setEngine($v8);
  77. $audi80->setTitle('Audi-80');
  78. $this->em->persist($audi80);
  79. $audi80s = new Car;
  80. $audi80s->setParent($audi80);
  81. $audi80s->setTitle('Audi-80s');
  82. $audi80s->setEngine($v8);
  83. $this->em->persist($audi80s);
  84. $icarus = new Bus;
  85. $icarus->setEngine($v8);
  86. $icarus->setTitle('Icarus');
  87. $this->em->persist($icarus);
  88. $audiJet = new Car;
  89. $audiJet->setParent($audi80);
  90. $audiJet->setTitle('Audi-jet');
  91. $audiJet->setEngine($v6);
  92. $this->em->persist($audiJet);
  93. $this->em->flush();
  94. }
  95. }