1
0
mirror of synced 2025-02-02 21:41:45 +03:00

#6303 #6304 simplified tests, removing references to contract naming

This commit is contained in:
Marco Pivetta 2017-08-19 16:48:50 +02:00
parent f6ce69fe29
commit 328467c226
No known key found for this signature in database
GPG Key ID: 4167D3337FD9D629

View File

@ -3,6 +3,7 @@
namespace Doctrine\Tests\ORM\Functional\Ticket;
use Doctrine\DBAL\Schema\SchemaException;
use Doctrine\ORM\Tools\ToolsException;
use Doctrine\Tests\OrmFunctionalTestCase;
/**
@ -13,29 +14,33 @@ class DDC6303Test extends OrmFunctionalTestCase
public function setUp()
{
parent::setUp();
try {
$this->_schemaTool->createSchema([
$this->_em->getClassMetadata(DDC6303Contract::class),
$this->_em->getClassMetadata(DDC6303ContractA::class),
$this->_em->getClassMetadata(DDC6303ContractB::class),
$this->_em->getClassMetadata(DDC6303BaseClass::class),
$this->_em->getClassMetadata(DDC6303ChildA::class),
$this->_em->getClassMetadata(DDC6303ChildB::class),
]);
} catch (SchemaException $ignored) {
} catch (ToolsException $ignored) {
}
}
public function testMixedTypeHydratedCorrectlyInJoinedInheritance()
{
$contractA = new DDC6303ContractA();
$contractAData = 'authorized';
$contractA->originalData = $contractAData;
$a = new DDC6303ChildA();
$b = new DDC6303ChildB();
$contractB = new DDC6303ContractB();
//contractA and contractB have an inheritance from Contract, but one has a string originalData and the second has an array
$contractBData = ['accepted', 'authorized'];
$contractB->originalData = $contractBData;
$aData = 'authorized';
$bData = ['accepted', 'authorized'];
$this->_em->persist($contractA);
$this->_em->persist($contractB);
// DDC6303ChildA and DDC6303ChildB have an inheritance from DDC6303BaseClass,
// but one has a string originalData and the second has an array, since the fields
// are mapped differently
$a->originalData = $aData;
$b->originalData = $bData;
$this->_em->persist($a);
$this->_em->persist($b);
$this->_em->flush();
@ -43,11 +48,11 @@ class DDC6303Test extends OrmFunctionalTestCase
// instead of just returning the existing managed entities
$this->_em->clear();
$repository = $this->_em->getRepository(DDC6303Contract::class);
$repository = $this->_em->getRepository(DDC6303BaseClass::class);
$dataMap = [
$contractA->id => $contractAData,
$contractB->id => $contractBData,
$a->id => $aData,
$b->id => $bData,
];
$contracts = $repository
@ -71,9 +76,9 @@ class DDC6303Test extends OrmFunctionalTestCase
$contractStringZeroData = 0;
$contractArrayEmptyData = [];
$contractStringEmpty = new DDC6303ContractA();
$contractStringZero = new DDC6303ContractA();
$contractArrayEmpty = new DDC6303ContractB();
$contractStringEmpty = new DDC6303ChildA();
$contractStringZero = new DDC6303ChildA();
$contractArrayEmpty = new DDC6303ChildB();
$contractStringEmpty->originalData = $contractStringEmptyData;
$contractStringZero->originalData = $contractStringZeroData;
@ -89,13 +94,14 @@ class DDC6303Test extends OrmFunctionalTestCase
// instead of just returning the existing managed entities
$this->_em->clear();
$repository = $this->_em->getRepository(DDC6303Contract::class);
$repository = $this->_em->getRepository(DDC6303BaseClass::class);
$dataMap = [
$contractStringZero->id => $contractStringZeroData,
$contractStringEmpty->id => $contractStringEmptyData,
$contractArrayEmpty->id => $contractArrayEmptyData,
];
/* @var $contracts DDC6303ChildA[]|DDC6303ChildB[] */
$contracts = $repository
->createQueryBuilder('p')
->where('p.id IN(:ids)')
@ -119,26 +125,25 @@ class DDC6303Test extends OrmFunctionalTestCase
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({
* "contract" = "DDC6303Contract",
* "contract_b" = "DDC6303ContractB",
* "contract_a" = "DDC6303ContractA"
* DDC6303ChildA::class = DDC6303ChildA::class,
* DDC6303ChildB::class = DDC6303ChildB::class,
* })
*/
class DDC6303Contract
abstract class DDC6303BaseClass
{
/** @Id @Column(type="integer") @GeneratedValue */
public $id;
}
/** @Entity @Table */
class DDC6303ContractA extends DDC6303Contract
class DDC6303ChildA extends DDC6303BaseClass
{
/** @Column(type="string", nullable=true) */
public $originalData;
}
/** @Entity @Table */
class DDC6303ContractB extends DDC6303Contract
class DDC6303ChildB extends DDC6303BaseClass
{
/** @Column(type="simple_array", nullable=true) */
public $originalData;