Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC1436Test.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Functional\Ticket;
4 use Doctrine\ORM\UnitOfWork;
5
6 /**
7  * @group DDC-1436
8  */
9 class DDC1436Test extends \Doctrine\Tests\OrmFunctionalTestCase
10 {
11     protected function setUp()
12     {
13         parent::setUp();
14
15         try {
16             $this->_schemaTool->createSchema(array(
17                 $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1436Page'),
18             ));
19         } catch (\Exception $ignored) {
20         }
21     }
22
23     public function testIdentityMap()
24     {
25         // fixtures
26         $parent = null;
27         for ($i = 0; $i < 3; $i++) {
28             $page = new DDC1436Page();
29             $page->setParent($parent);
30             $this->_em->persist($page);
31             $parent = $page;
32         }
33         $this->_em->flush();
34         $this->_em->clear();
35
36         $id = $parent->getId();
37
38         // step 1
39         $page = $this->_em
40                 ->createQuery('SELECT p, parent FROM ' . __NAMESPACE__ . '\DDC1436Page p LEFT JOIN p.parent parent WHERE p.id = :id')
41                 ->setParameter('id', $id)
42                 ->getOneOrNullResult();
43
44         $this->assertInstanceOf(__NAMESPACE__ . '\DDC1436Page', $page);
45
46         // step 2
47         $page = $this->_em->find(__NAMESPACE__ . '\DDC1436Page', $id);
48         $this->assertInstanceOf(__NAMESPACE__ . '\DDC1436Page', $page);
49         $this->assertInstanceOf(__NAMESPACE__ . '\DDC1436Page', $page->getParent());
50         $this->assertInstanceOf(__NAMESPACE__ . '\DDC1436Page', $page->getParent()->getParent());
51     }
52 }
53
54 /**
55  * @Entity
56  */
57 class DDC1436Page
58 {
59     /**
60      * @Id
61      * @GeneratedValue
62      * @Column(type="integer", name="id")
63      */
64     protected $id;
65     /**
66      * @ManyToOne(targetEntity="DDC1436Page")
67      * @JoinColumn(name="pid", referencedColumnName="id")
68      */
69     protected $parent;
70
71     public function getId()
72     {
73         return $this->id;
74     }
75
76     /**
77      * @return DDC1436Page
78      */
79     public function getParent()
80     {
81         return $this->parent;
82     }
83
84     public function setParent($parent)
85     {
86         $this->parent = $parent;
87     }
88 }
89