Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Tools / ResolveTargetEntityListenerTest.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Tools;
4
5 use Doctrine\ORM\Events;
6 use Doctrine\ORM\Mapping\ClassMetadataFactory;
7 use Doctrine\ORM\Tools\ResolveTargetEntityListener;
8
9 require_once __DIR__ . '/../../TestInit.php';
10
11 class ResolveTargetEntityListenerTest extends \Doctrine\Tests\OrmTestCase
12 {
13     /**
14      * @var EntityManager
15      */
16     private $em = null;
17
18     /**
19      * @var ResolveTargetEntityListener
20      */
21     private $listener = null;
22
23     /**
24      * @var ClassMetadataFactory
25      */
26     private $factory = null;
27
28     public function setUp()
29     {
30         $annotationDriver = $this->createAnnotationDriver();
31
32         $this->em = $this->_getTestEntityManager();
33         $this->em->getConfiguration()->setMetadataDriverImpl($annotationDriver);
34         $this->factory = new ClassMetadataFactory;
35         $this->factory->setEntityManager($this->em);
36         $this->listener = new ResolveTargetEntityListener;
37     }
38
39     /**
40      * @group DDC-1544
41      */
42     public function testResolveTargetEntityListenerCanResolveTargetEntity()
43     {
44         $evm = $this->em->getEventManager();
45         $this->listener->addResolveTargetEntity(
46             'Doctrine\Tests\ORM\Tools\ResolveTargetInterface',
47             'Doctrine\Tests\ORM\Tools\ResolveTargetEntity',
48             array()
49         );
50         $this->listener->addResolveTargetEntity(
51             'Doctrine\Tests\ORM\Tools\TargetInterface',
52             'Doctrine\Tests\ORM\Tools\TargetEntity',
53             array()
54         );
55         $evm->addEventListener(Events::loadClassMetadata, $this->listener);
56         $cm = $this->factory->getMetadataFor('Doctrine\Tests\ORM\Tools\ResolveTargetEntity');
57         $meta = $cm->associationMappings;
58         $this->assertSame('Doctrine\Tests\ORM\Tools\TargetEntity', $meta['manyToMany']['targetEntity']);
59         $this->assertSame('Doctrine\Tests\ORM\Tools\ResolveTargetEntity', $meta['manyToOne']['targetEntity']);
60         $this->assertSame('Doctrine\Tests\ORM\Tools\ResolveTargetEntity', $meta['oneToMany']['targetEntity']);
61         $this->assertSame('Doctrine\Tests\ORM\Tools\TargetEntity', $meta['oneToOne']['targetEntity']);
62     }
63 }
64
65 interface ResolveTargetInterface
66 {
67     public function getId();
68 }
69
70 interface TargetInterface extends ResolveTargetInterface
71 {
72 }
73
74 /**
75  * @Entity
76  */
77 class ResolveTargetEntity implements ResolveTargetInterface
78 {
79     /**
80      * @Id
81      * @Column(type="integer")
82      * @GeneratedValue(strategy="AUTO")
83      */
84     private $id;
85
86     /**
87      * @ManyToMany(targetEntity="Doctrine\Tests\ORM\Tools\TargetInterface")
88      */
89     private $manyToMany;
90
91     /**
92      * @ManyToOne(targetEntity="Doctrine\Tests\ORM\Tools\ResolveTargetInterface", inversedBy="oneToMany")
93      */
94     private $manyToOne;
95
96     /**
97      * @OneToMany(targetEntity="Doctrine\Tests\ORM\Tools\ResolveTargetInterface", mappedBy="manyToOne")
98      */
99     private $oneToMany;
100
101     /**
102      * @OneToOne(targetEntity="Doctrine\Tests\ORM\Tools\TargetInterface")
103      * @JoinColumn(name="target_entity_id", referencedColumnName="id")
104      */
105     private $oneToOne;
106
107     public function getId()
108     {
109         return $this->id;
110     }
111 }
112
113 /**
114  * @Entity
115  */
116 class TargetEntity implements TargetInterface
117 {
118     /**
119      * @Id
120      * @Column(type="integer")
121      * @GeneratedValue(strategy="AUTO")
122      */
123     private $id;
124
125     public function getId()
126     {
127         return $this->id;
128     }
129 }