1
0
mirror of synced 2025-02-03 22:09:26 +03:00
Luís Cobucci 1bf884970f
Increment assertion count manually
Which is needed to test void methods that shouldn't raise any exception
on a certain condition. If the interpreter gets to the point where the
assertion count is incremented it means that no exceptions have been
thrown and our test is successful.

Important to note that some tests were slighly refactored to simplify
things a bit.
2017-06-12 23:04:56 +02:00

100 lines
2.7 KiB
PHP

<?php
namespace Doctrine\Tests\ORM\Functional\Ticket;
use Doctrine\ORM\AbstractQuery;
use Doctrine\ORM\Internal\Hydration\HydrationException;
/**
* @group DDC-2306
*/
class DDC3170Test extends \Doctrine\Tests\OrmFunctionalTestCase
{
/**
* {@inheritDoc}
*/
protected function setUp()
{
parent::setUp();
$this->_schemaTool->createSchema(
[
$this->_em->getClassMetadata(DDC3170AbstractEntityJoined::class),
$this->_em->getClassMetadata(DDC3170ProductJoined::class),
$this->_em->getClassMetadata(DDC3170AbstractEntitySingleTable::class),
$this->_em->getClassMetadata(DDC3170ProductSingleTable::class),
]
);
}
/**
* Tests that the discriminator column is correctly read from the meta mappings when fetching a
* child from an inheritance mapped class.
*
* The simple object hydration maps the type field to a field alias like type2. This mapping needs
* to be considered when loading the discriminator column's value from the SQL result.
*
* {@see \Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator::hydrateRowData()}
*/
public function testIssue()
{
$productJoined = new DDC3170ProductJoined();
$productSingleTable = new DDC3170ProductSingleTable();
$this->_em->persist($productJoined);
$this->_em->persist($productSingleTable);
$this->_em->flush();
$this->_em->clear();
$this->_em->createQueryBuilder()
->select('p')
->from(DDC3170ProductJoined::class, 'p')
->getQuery()
->getResult(AbstractQuery::HYDRATE_SIMPLEOBJECT);
$this->_em->createQueryBuilder()
->select('p')
->from(DDC3170ProductSingleTable::class, 'p')
->getQuery()
->getResult(AbstractQuery::HYDRATE_SIMPLEOBJECT);
}
}
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"product" = "DDC3170ProductJoined"})
*/
abstract class DDC3170AbstractEntityJoined
{
/** @Id @Column(type="integer") @GeneratedValue */
public $id;
}
/**
* @Entity
*/
class DDC3170ProductJoined extends DDC3170AbstractEntityJoined
{
}
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"product" = "DDC3170ProductSingleTable"})
*/
abstract class DDC3170AbstractEntitySingleTable
{
/** @Id @Column(type="integer") @GeneratedValue */
public $id;
}
/**
* @Entity
*/
class DDC3170ProductSingleTable extends DDC3170AbstractEntitySingleTable
{
}