1
0
mirror of synced 2025-03-06 21:06:16 +03:00

Add tests to ensure DiscriminatorColumn is optional, and that optional params type and length have proper defaults.

This commit is contained in:
Bill Schaller 2016-01-05 12:29:49 -05:00
parent 7f16e5bc51
commit d97fad26a5
5 changed files with 173 additions and 1 deletions

View File

@ -4,6 +4,8 @@ namespace Doctrine\Tests\ORM\Mapping;
use Doctrine\ORM\Events; use Doctrine\ORM\Events;
use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Mapping\DiscriminatorColumn;
use Doctrine\ORM\Mapping\Id;
use Doctrine\Tests\Models\Company\CompanyFixContract; use Doctrine\Tests\Models\Company\CompanyFixContract;
use Doctrine\Tests\Models\Company\CompanyFlexContract; use Doctrine\Tests\Models\Company\CompanyFlexContract;
use Doctrine\Tests\Models\Cache\City; use Doctrine\Tests\Models\Cache\City;
@ -977,6 +979,52 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase
$this->assertSame('implicit_schema', $metadata->getSchemaName()); $this->assertSame('implicit_schema', $metadata->getSchemaName());
$this->assertSame('implicit_table', $metadata->getTableName()); $this->assertSame('implicit_table', $metadata->getTableName());
} }
/**
* @group DDC-514
* @group DDC-1015
*/
public function testDiscriminatorColumnDefaultLength()
{
if (strpos(get_class($this), 'PHPMappingDriver') !== false) {
$this->markTestSkipped('PHP Mapping Drivers have no defaults.');
}
$class = $this->createClassMetadata(__NAMESPACE__ . '\SingleTableEntityNoDiscriminatorColumnMapping');
$this->assertEquals(255, $class->discriminatorColumn['length']);
$class = $this->createClassMetadata(__NAMESPACE__ . '\SingleTableEntityIncompleteDiscriminatorColumnMapping');
$this->assertEquals(255, $class->discriminatorColumn['length']);
}
/**
* @group DDC-514
* @group DDC-1015
*/
public function testDiscriminatorColumnDefaultType()
{
if (strpos(get_class($this), 'PHPMappingDriver') !== false) {
$this->markTestSkipped('PHP Mapping Drivers have no defaults.');
}
$class = $this->createClassMetadata(__NAMESPACE__ . '\SingleTableEntityNoDiscriminatorColumnMapping');
$this->assertEquals('string', $class->discriminatorColumn['type']);
$class = $this->createClassMetadata(__NAMESPACE__ . '\SingleTableEntityIncompleteDiscriminatorColumnMapping');
$this->assertEquals('string', $class->discriminatorColumn['type']);
}
/**
* @group DDC-514
* @group DDC-1015
*/
public function testDiscriminatorColumnDefaultName()
{
if (strpos(get_class($this), 'PHPMappingDriver') !== false) {
$this->markTestSkipped('PHP Mapping Drivers have no defaults.');
}
$class = $this->createClassMetadata(__NAMESPACE__ . '\SingleTableEntityNoDiscriminatorColumnMapping');
$this->assertEquals('dtype', $class->discriminatorColumn['name']);
$class = $this->createClassMetadata(__NAMESPACE__ . '\SingleTableEntityIncompleteDiscriminatorColumnMapping');
$this->assertEquals('dtype', $class->discriminatorColumn['name']);
}
} }
/** /**
@ -1317,7 +1365,6 @@ class DDC807Entity
} }
} }
class DDC807SubClasse1 {} class DDC807SubClasse1 {}
class DDC807SubClasse2 {} class DDC807SubClasse2 {}
@ -1357,3 +1404,68 @@ class Comment
)); ));
} }
} }
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorMap({
* "ONE" = "SingleTableEntityNoDiscriminatorColumnMappingSub1",
* "TWO" = "SingleTableEntityNoDiscriminatorColumnMappingSub2"
* })
*/
class SingleTableEntityNoDiscriminatorColumnMapping
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="NONE")
*/
public $id;
public static function loadMetadata(ClassMetadataInfo $metadata)
{
$metadata->mapField(array(
'id' => true,
'fieldName' => 'id',
));
$metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_NONE);
}
}
class SingleTableEntityNoDiscriminatorColumnMappingSub1 extends SingleTableEntityNoDiscriminatorColumnMapping {}
class SingleTableEntityNoDiscriminatorColumnMappingSub2 extends SingleTableEntityNoDiscriminatorColumnMapping {}
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorMap({
* "ONE" = "SingleTableEntityIncompleteDiscriminatorColumnMappingSub1",
* "TWO" = "SingleTableEntityIncompleteDiscriminatorColumnMappingSub2"
* })
* @DiscriminatorColumn(name="dtype")
*/
class SingleTableEntityIncompleteDiscriminatorColumnMapping
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="NONE")
*/
public $id;
public static function loadMetadata(ClassMetadataInfo $metadata)
{
$metadata->mapField(array(
'id' => true,
'fieldName' => 'id',
));
$metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_NONE);
}
}
class SingleTableEntityIncompleteDiscriminatorColumnMappingSub1
extends SingleTableEntityIncompleteDiscriminatorColumnMapping {}
class SingleTableEntityIncompleteDiscriminatorColumnMappingSub2
extends SingleTableEntityIncompleteDiscriminatorColumnMapping {}

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Doctrine\Tests\ORM\Mapping\SingleTableEntityIncompleteDiscriminatorColumnMapping" inheritance-type="SINGLE_TABLE">
<discriminator-column name="dtype" />
<discriminator-map>
<discriminator-mapping value="ONE" class="SingleTableEntityIncompleteDiscriminatorColumnMappingSub1" />
<discriminator-mapping value="TWO" class="SingleTableEntityIncompleteDiscriminatorColumnMappingSub2" />
</discriminator-map>
<id name="id">
<generator strategy="NONE"/>
</id>
</entity>
</doctrine-mapping>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Doctrine\Tests\ORM\Mapping\SingleTableEntityNoDiscriminatorColumnMapping" inheritance-type="SINGLE_TABLE">
<discriminator-map>
<discriminator-mapping value="ONE" class="SingleTableEntityNoDiscriminatorColumnMappingSub1" />
<discriminator-mapping value="TWO" class="SingleTableEntityNoDiscriminatorColumnMappingSub2" />
</discriminator-map>
<id name="id">
<generator strategy="NONE"/>
</id>
</entity>
</doctrine-mapping>

View File

@ -0,0 +1,12 @@
Doctrine\Tests\ORM\Mapping\SingleTableEntityIncompleteDiscriminatorColumnMapping:
type: entity
inheritanceType: SINGLE_TABLE
discriminatorMap:
ONE: SingleTableEntityIncompleteDiscriminatorColumnMappingSub1
TWO: SingleTableEntityIncompleteDiscriminatorColumnMappingSub2
discriminatorColumn:
name: dtype
id:
id:
generator:
strategy: NONE

View File

@ -0,0 +1,10 @@
Doctrine\Tests\ORM\Mapping\SingleTableEntityNoDiscriminatorColumnMapping:
type: entity
inheritanceType: SINGLE_TABLE
discriminatorMap:
ONE: SingleTableEntityNoDiscriminatorColumnMappingSub1
TWO: SingleTableEntityNoDiscriminatorColumnMappingSub2
id:
id:
generator:
strategy: NONE