InMemoryUpdatesWithInheritanceTest.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 InMemoryUpdatesWithInheritance 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. $this->em->refresh($man1);
  43. $left = $man1->getLeft();
  44. $right = $man1->getRight();
  45. $level = $man1->getLevel();
  46. $this->assertEquals(1, $left);
  47. $this->assertEquals(8, $right);
  48. $this->assertEquals(0, $level);
  49. $this->em->refresh($woman1);
  50. $left = $woman1->getLeft();
  51. $right = $woman1->getRight();
  52. $level = $woman1->getLevel();
  53. $this->assertEquals(2, $left);
  54. $this->assertEquals(7, $right);
  55. $this->assertEquals(1, $level);
  56. $this->em->refresh($man2);
  57. $left = $man2->getLeft();
  58. $right = $man2->getRight();
  59. $level = $man2->getLevel();
  60. $this->assertEquals(3, $left);
  61. $this->assertEquals(6, $right);
  62. $this->assertEquals(2, $level);
  63. $this->em->refresh($woman2);
  64. $left = $woman2->getLeft();
  65. $right = $woman2->getRight();
  66. $level = $woman2->getLevel();
  67. $this->assertEquals(4, $left);
  68. $this->assertEquals(5, $right);
  69. $this->assertEquals(3, $level);
  70. }
  71. protected function getUsedEntityFixtures()
  72. {
  73. return array(
  74. self::PERSON,
  75. self::MAN,
  76. self::WOMAN
  77. );
  78. }
  79. }