1
0
mirror of synced 2024-12-14 15:16:04 +03:00
doctrine2/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2084Test.php
2012-11-05 22:23:44 -02:00

128 lines
2.7 KiB
PHP

<?php
namespace Doctrine\Tests\ORM\Functional\Ticket;
/**
* @group DDC-2084
*/
class DDC2084Test extends \Doctrine\Tests\OrmFunctionalTestCase
{
public function setUp()
{
parent::setUp();
try {
$this->_schemaTool->createSchema(array(
$this->_em->getClassMetadata(__NAMESPACE__ . '\DDC2084\MyEntity1'),
$this->_em->getClassMetadata(__NAMESPACE__ . '\DDC2084\MyEntity2'),
));
} catch (\Exception $exc) {
}
}
public function loadFixture()
{
$e2 = new DDC2084\MyEntity2('Foo');
$e1 = new DDC2084\MyEntity1($e2);
$this->_em->persist($e2);
$this->_em->flush();
$this->_em->persist($e1);
$this->_em->flush();
$this->_em->clear();
return $e1;
}
public function testIssue()
{
$e1 = $this->loadFixture();
$e2 = $e1->getMyEntity2();
$e = $this->_em->find(__NAMESPACE__ . '\DDC2084\MyEntity1', $e2);
$this->assertInstanceOf(__NAMESPACE__ . '\DDC2084\MyEntity1', $e);
$this->assertInstanceOf(__NAMESPACE__ . '\DDC2084\MyEntity2', $e->getMyEntity2());
$this->assertEquals('Foo', $e->getMyEntity2()->getValue());
}
/**
* @expectedException \Doctrine\ORM\ORMInvalidArgumentException
* @expectedExceptionMessage Binding entities to query parameters only allowed for entities that have an identifier.
*/
public function testinvalidIdentifierBindingEntityException()
{
$this->_em->find(__NAMESPACE__ . '\DDC2084\MyEntity1', new DDC2084\MyEntity2('Foo'));
}
}
namespace Doctrine\Tests\ORM\Functional\Ticket\DDC2084;
/**
* @Entity
* @Table(name="DDC2084_ENTITY1")
*/
class MyEntity1
{
/**
* @Id
* @OneToOne(targetEntity="MyEntity2")
* @JoinColumn(name="entity2_id", referencedColumnName="id", nullable=false)
*/
private $entity2;
public function __construct(MyEntity2 $myEntity2)
{
$this->entity2 = $myEntity2;
}
public function setMyEntity2(MyEntity2 $myEntity2)
{
$this->entity2 = $myEntity2;
}
public function getMyEntity2()
{
return $this->entity2;
}
}
/**
* @Entity
* @Table(name="DDC2084_ENTITY2")
*/
class MyEntity2
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Column
*/
private $value;
public function __construct($value)
{
$this->value = $value;
}
public function getId()
{
return $this->id;
}
public function getValue()
{
return $this->value;
}
public function setValue($value)
{
$this->value = $value;
}
}