|
@@ -0,0 +1,97 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Gedmo\Tree;
|
|
|
+
|
|
|
+use Doctrine\Common\EventManager;
|
|
|
+use Tool\BaseTestCaseORM;
|
|
|
+use Tree\Fixture\Genealogy\Man;
|
|
|
+use Tree\Fixture\Genealogy\Woman;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Additional tests for tree inheritance and in-memory updates
|
|
|
+ *
|
|
|
+ * @author Illya Klymov <xanf@xanf.me>
|
|
|
+ * @package Gedmo.Tree
|
|
|
+ * @link http://www.gediminasm.org
|
|
|
+ * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
|
|
+ */
|
|
|
+class InMemoryUpdatesWithInheritance extends BaseTestCaseORM
|
|
|
+{
|
|
|
+
|
|
|
+ const PERSON = "Tree\\Fixture\\Genealogy\\Person";
|
|
|
+ const MAN = "Tree\\Fixture\\Genealogy\\Man";
|
|
|
+ const WOMAN = "Tree\\Fixture\\Genealogy\\Woman";
|
|
|
+
|
|
|
+ protected function setUp()
|
|
|
+ {
|
|
|
+ parent::setUp();
|
|
|
+
|
|
|
+ $evm = new EventManager;
|
|
|
+ $evm->addEventSubscriber(new TreeListener);
|
|
|
+
|
|
|
+ $this->getMockSqliteEntityManager($evm);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testInMemoryTreeInsertsWithInheritance()
|
|
|
+ {
|
|
|
+ $nodes = array();
|
|
|
+
|
|
|
+ $man1 = new Man('Root - Man1');
|
|
|
+ $this->em->persist($man1);
|
|
|
+
|
|
|
+ $woman1 = new Woman('Level 1 - Woman1');
|
|
|
+ $this->em->persist($woman1);
|
|
|
+ $woman1->setParent($man1);
|
|
|
+
|
|
|
+ $man2 = new Man('Level 2 - Man2');
|
|
|
+ $this->em->persist($man2);
|
|
|
+ $man2->setParent($woman1);
|
|
|
+
|
|
|
+ $woman2 = new Woman('Level 3 - Woman2');
|
|
|
+ $this->em->persist($woman2);
|
|
|
+ $woman2->setParent($man2);
|
|
|
+
|
|
|
+ $this->em->flush();
|
|
|
+
|
|
|
+ $this->em->refresh($man1);
|
|
|
+ $left = $man1->getLeft();
|
|
|
+ $right = $man1->getRight();
|
|
|
+ $level = $man1->getLevel();
|
|
|
+ $this->assertEquals(1, $left);
|
|
|
+ $this->assertEquals(8, $right);
|
|
|
+ $this->assertEquals(0, $level);
|
|
|
+
|
|
|
+ $this->em->refresh($woman1);
|
|
|
+ $left = $woman1->getLeft();
|
|
|
+ $right = $woman1->getRight();
|
|
|
+ $level = $woman1->getLevel();
|
|
|
+ $this->assertEquals(2, $left);
|
|
|
+ $this->assertEquals(7, $right);
|
|
|
+ $this->assertEquals(1, $level);
|
|
|
+
|
|
|
+ $this->em->refresh($man2);
|
|
|
+ $left = $man2->getLeft();
|
|
|
+ $right = $man2->getRight();
|
|
|
+ $level = $man2->getLevel();
|
|
|
+ $this->assertEquals(3, $left);
|
|
|
+ $this->assertEquals(6, $right);
|
|
|
+ $this->assertEquals(2, $level);
|
|
|
+
|
|
|
+ $this->em->refresh($woman2);
|
|
|
+ $left = $woman2->getLeft();
|
|
|
+ $right = $woman2->getRight();
|
|
|
+ $level = $woman2->getLevel();
|
|
|
+ $this->assertEquals(4, $left);
|
|
|
+ $this->assertEquals(5, $right);
|
|
|
+ $this->assertEquals(3, $level);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected function getUsedEntityFixtures()
|
|
|
+ {
|
|
|
+ return array(
|
|
|
+ self::PERSON,
|
|
|
+ self::MAN,
|
|
|
+ self::WOMAN
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|