1
0
mirror of synced 2025-01-19 06:51:40 +03:00

#1265 DDC-3517 - failing test - finding via a STI root class fails if there is a one-to-one association in a subclass

This commit is contained in:
Marco Pivetta 2015-01-18 18:13:15 +01:00
parent 61e07e5907
commit bffc99a116

View File

@ -0,0 +1,81 @@
<?php
namespace Doctrine\Tests\ORM\Functional;
use Doctrine\Tests\Models\ECommerce\ECommerceProduct;
use Doctrine\Tests\Models\ECommerce\ECommerceShipping;
use Doctrine\ORM\Mapping\AssociationMapping;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Query;
use Doctrine\Tests\OrmFunctionalTestCase;
/**
* Tests a unidirectional one-to-one association mapping (without inheritance).
* Inverse side is not present.
*/
class OneToOneSingleTableInheritanceTest extends OrmFunctionalTestCase
{
protected function setUp()
{
//$this->useModelSet('ecommerce');
parent::setUp();
$this->_schemaTool->createSchema([
$this->_em->getClassMetadata(Pet::CLASSNAME),
$this->_em->getClassMetadata(Cat::CLASSNAME),
$this->_em->getClassMetadata(LitterBox::CLASSNAME),
]);
}
public function testFindFromOneToOneOwningSideJoinedTableInheritance()
{
$cat = new Cat();
$cat->litterBox = new LitterBox();
$this->_em->persist($cat);
$this->_em->persist($cat->litterBox);
$this->_em->flush();
$this->_em->clear();
/* @var $foundCat Cat */
$foundCat = $this->_em->find(Pet::CLASSNAME, $cat->id);
$this->assertInstanceOf(Cat::CLASSNAME, $foundCat);
$this->assertSame($cat->id, $foundCat->id);
$this->assertInstanceOf(LitterBox::CLASSNAME, $foundCat->litterBox);
$this->assertSame($cat->litterBox->id, $foundCat->litterBox->id);
}
}
/** @Entity @InheritanceType("SINGLE_TABLE") @DiscriminatorMap({"cat" = "Cat"}) */
abstract class Pet
{
const CLASSNAME = __CLASS__;
/** @Id @Column(type="integer") @GeneratedValue(strategy="AUTO") */
public $id;
}
/** @Entity */
class Cat extends Pet
{
const CLASSNAME = __CLASS__;
/**
* @OneToOne(targetEntity="LitterBox")
*
* @var LitterBox
*/
public $litterBox;
}
/** @Entity */
class LitterBox
{
const CLASSNAME = __CLASS__;
/** @Id @Column(type="integer") @GeneratedValue(strategy="AUTO") */
public $id;
}