From 22bcfef523f0768c9500571e42833cffb11a9931 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Thu, 23 Jan 2014 20:14:22 +0100 Subject: [PATCH] DDC-2931 - cleaning up code formatting/simplifying test case --- .../ORM/Functional/Ticket/DDC2931Test.php | 163 ++++-------------- 1 file changed, 33 insertions(+), 130 deletions(-) diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2931Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2931Test.php index da98a8d8a..9d7607491 100755 --- a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2931Test.php +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2931Test.php @@ -2,8 +2,6 @@ namespace Doctrine\Tests\ORM\Functional\Ticket; -use Doctrine\Common\Collections\ArrayCollection; - require_once __DIR__ . '/../../../TestInit.php'; /** @@ -14,154 +12,59 @@ class DDC2931Test extends \Doctrine\Tests\OrmFunctionalTestCase public function setUp() { parent::setUp(); + try { $this->_schemaTool->createSchema(array( $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC2931User'), )); - } catch(\Exception $e) { - + } catch (\Exception $e) { + // no action needed - schema seems to be already in place } } public function testIssue() { - $first = new DDC2931User(null); - $this->_em->persist($first); + $first = new DDC2931User(); + $second = new DDC2931User(); + $third = new DDC2931User(); - $second = new DDC2931User($first); - $this->_em->persist($second); + $second->parent = $first; + $third->parent = $second; - $third = new DDC2931User($second); - $this->_em->persist($third); - - - $this->_em->flush(); - $this->_em->clear(); + $this->_em->persist($first); + $this->_em->persist($second); + $this->_em->persist($third); - // Load Entity in second order - $second = $this->_em->find('Doctrine\Tests\ORM\Functional\Ticket\DDC2931User', $second->getId()); - // crash here with "Segmentation error" caused by infinite loop. This work correctly with doctrine 2.3 - $second->getRank(); + $this->_em->flush(); + $this->_em->clear(); + + // Load Entity in second order + $second = $this->_em->find('Doctrine\Tests\ORM\Functional\Ticket\DDC2931User', $second->id); + $this->assertSame(2, $second->getRank()); } } -/** - * @Entity - */ +/** @Entity */ class DDC2931User { - /** - * @Id - * @Column(type="integer") - * @GeneratedValue(strategy="AUTO") - */ - protected $id; + /** @Id @Column(type="integer") @GeneratedValue(strategy="AUTO") */ + public $id; - /** - * - * @OneToOne(targetEntity="DDC2931User", inversedBy="child") - * @JoinColumn(name="parent_id", referencedColumnName="id", nullable = true) - **/ - protected $parent; + /** @OneToOne(targetEntity="DDC2931User", inversedBy="child") */ + public $parent; - /** - * @OneToOne(targetEntity="DDC2931User", mappedBy="parent") - **/ - protected $child; - - - /** - * Constructeur. - */ - public function __construct ($parent = null) - { - $this->parent = $parent; - } - - /** - * Return Rank recursively - * My rank is 1 + rank of my parent - * @return integer - */ - public function getRank() - { - if($this->parent == null) - return 1; - return 1 + $this->parent->getRank(); - } - - /** - * @return the $id - */ - public function getId () - { - return $this->id; - } - - /** - * @return the $parent - */ - public function getParent () - { - return $this->parent; - } - - - /** - * @param integer $id - */ - public function setId ($id) - { - $this->id = $id; - } - - /** - * @param DDC2931User $parent - */ - public function setParent ($parent) - { - $this->parent = $parent; - } - - - /** - * @return the $child - */ - public function getChild () - { - return $this->child; - } - - /** - * @param DDC2931User $child - */ - public function setChild ($child) - { - $this->child = $child; - } - - /** - * Magic getter to expose protected properties. - * - * @param string $property - * @return mixed - */ - public function __get ($property) - { - return $this->$property; - } - - /** - * Magic setter to save protected properties. - * - * @param string $property - * @param mixed $value - */ - public function __set ($property, $value) - { - $this->$property = $value; - } + /** @OneToOne(targetEntity="DDC2931User", mappedBy="parent") */ + public $child; + /** + * Return Rank recursively + * My rank is 1 + rank of my parent + * @return integer + */ + public function getRank() + { + return 1 + ($this->parent ? $this->parent->getRank() : 0); + } }