InMemoryUpdatesWithInheritanceTest.php 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace Gedmo\Tree;
  3. use Doctrine\Common\EventManager;
  4. use Tool\BaseTestCaseORM;
  5. use Tree\Fixture\Genealogy\Man;
  6. use Tree\Fixture\Genealogy\Woman;
  7. /**
  8. * Additional tests for tree inheritance and in-memory updates
  9. *
  10. * @author Illya Klymov <xanf@xanf.me>
  11. * @package Gedmo.Tree
  12. * @link http://www.gediminasm.org
  13. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  14. */
  15. class InMemoryUpdatesWithInheritanceTest extends BaseTestCaseORM
  16. {
  17. const PERSON = "Tree\\Fixture\\Genealogy\\Person";
  18. const MAN = "Tree\\Fixture\\Genealogy\\Man";
  19. const WOMAN = "Tree\\Fixture\\Genealogy\\Woman";
  20. protected function setUp()
  21. {
  22. parent::setUp();
  23. $evm = new EventManager;
  24. $evm->addEventSubscriber(new TreeListener);
  25. $this->getMockSqliteEntityManager($evm);
  26. }
  27. public function testInMemoryTreeInsertsWithInheritance()
  28. {
  29. $nodes = array();
  30. $man1 = new Man('Root - Man1');
  31. $this->em->persist($man1);
  32. $woman1 = new Woman('Level 1 - Woman1');
  33. $this->em->persist($woman1);
  34. $woman1->setParent($man1);
  35. $man2 = new Man('Level 2 - Man2');
  36. $this->em->persist($man2);
  37. $man2->setParent($woman1);
  38. $woman2 = new Woman('Level 3 - Woman2');
  39. $this->em->persist($woman2);
  40. $woman2->setParent($man2);
  41. $this->em->flush();
  42. $left = $man1->getLeft();
  43. $right = $man1->getRight();
  44. $level = $man1->getLevel();
  45. $this->assertEquals(1, $left);
  46. $this->assertEquals(8, $right);
  47. $this->assertEquals(0, $level);
  48. $left = $woman1->getLeft();
  49. $right = $woman1->getRight();
  50. $level = $woman1->getLevel();
  51. $this->assertEquals(2, $left);
  52. $this->assertEquals(7, $right);
  53. $this->assertEquals(1, $level);
  54. $left = $man2->getLeft();
  55. $right = $man2->getRight();
  56. $level = $man2->getLevel();
  57. $this->assertEquals(3, $left);
  58. $this->assertEquals(6, $right);
  59. $this->assertEquals(2, $level);
  60. $left = $woman2->getLeft();
  61. $right = $woman2->getRight();
  62. $level = $woman2->getLevel();
  63. $this->assertEquals(4, $left);
  64. $this->assertEquals(5, $right);
  65. $this->assertEquals(3, $level);
  66. }
  67. protected function getUsedEntityFixtures()
  68. {
  69. return array(
  70. self::PERSON,
  71. self::MAN,
  72. self::WOMAN
  73. );
  74. }
  75. }