3 namespace Doctrine\Tests\ORM\Tools;
5 use Doctrine\ORM\Events;
6 use Doctrine\ORM\Mapping\ClassMetadataFactory;
7 use Doctrine\ORM\Tools\ResolveTargetEntityListener;
9 require_once __DIR__ . '/../../TestInit.php';
11 class ResolveTargetEntityListenerTest extends \Doctrine\Tests\OrmTestCase
19 * @var ResolveTargetEntityListener
21 private $listener = null;
24 * @var ClassMetadataFactory
26 private $factory = null;
28 public function setUp()
30 $annotationDriver = $this->createAnnotationDriver();
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;
42 public function testResolveTargetEntityListenerCanResolveTargetEntity()
44 $evm = $this->em->getEventManager();
45 $this->listener->addResolveTargetEntity(
46 'Doctrine\Tests\ORM\Tools\ResolveTargetInterface',
47 'Doctrine\Tests\ORM\Tools\ResolveTargetEntity',
50 $this->listener->addResolveTargetEntity(
51 'Doctrine\Tests\ORM\Tools\TargetInterface',
52 'Doctrine\Tests\ORM\Tools\TargetEntity',
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']);
65 interface ResolveTargetInterface
67 public function getId();
70 interface TargetInterface extends ResolveTargetInterface
77 class ResolveTargetEntity implements ResolveTargetInterface
81 * @Column(type="integer")
82 * @GeneratedValue(strategy="AUTO")
87 * @ManyToMany(targetEntity="Doctrine\Tests\ORM\Tools\TargetInterface")
92 * @ManyToOne(targetEntity="Doctrine\Tests\ORM\Tools\ResolveTargetInterface", inversedBy="oneToMany")
97 * @OneToMany(targetEntity="Doctrine\Tests\ORM\Tools\ResolveTargetInterface", mappedBy="manyToOne")
102 * @OneToOne(targetEntity="Doctrine\Tests\ORM\Tools\TargetInterface")
103 * @JoinColumn(name="target_entity_id", referencedColumnName="id")
107 public function getId()
116 class TargetEntity implements TargetInterface
120 * @Column(type="integer")
121 * @GeneratedValue(strategy="AUTO")
125 public function getId()