Skip to content

Commit 00bc67a

Browse files
committed
Add test for generators in inheritance
1 parent 74bfa47 commit 00bc67a

File tree

5 files changed

+120
-0
lines changed

5 files changed

+120
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Doctrine\Tests\Models\ValueGenerators;
6+
7+
use Doctrine\ORM\Annotation as ORM;
8+
9+
/**
10+
* @ORM\Entity
11+
*/
12+
class InheritanceGeneratorsChildA extends InheritanceGeneratorsRoot
13+
{
14+
/**
15+
* @ORM\Column(type="string")
16+
* @ORM\GeneratedValue("CUSTOM")
17+
* @ORM\CustomIdGenerator("Doctrine\Tests\Models\ValueGenerators\FooGenerator")
18+
* @var string|null
19+
*/
20+
private $a;
21+
22+
public function getA() : ?string
23+
{
24+
return $this->a;
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Doctrine\Tests\Models\ValueGenerators;
6+
7+
use Doctrine\ORM\Annotation as ORM;
8+
9+
/**
10+
* @ORM\Entity
11+
*/
12+
class InheritanceGeneratorsChildB extends InheritanceGeneratorsChildA
13+
{
14+
/**
15+
* @ORM\Column(type="string")
16+
* @ORM\GeneratedValue("CUSTOM")
17+
* @ORM\CustomIdGenerator("Doctrine\Tests\Models\ValueGenerators\BarGenerator")
18+
* @var string|null
19+
*/
20+
private $b;
21+
22+
public function getB() : ?string
23+
{
24+
return $this->b;
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Doctrine\Tests\Models\ValueGenerators;
6+
7+
use Doctrine\ORM\Annotation as ORM;
8+
9+
/**
10+
* @ORM\Entity
11+
* @ORM\Table(name="vg_inheritance_generators")
12+
* @ORM\InheritanceType(value="SINGLE_TABLE")
13+
* @ORM\DiscriminatorColumn(name="type", type="integer")
14+
* @ORM\DiscriminatorMap({
15+
* 1 = "Doctrine\Tests\Models\ValueGenerators\InheritanceGeneratorsRoot",
16+
* 2 = "Doctrine\Tests\Models\ValueGenerators\InheritanceGeneratorsChildA",
17+
* 3 = "Doctrine\Tests\Models\ValueGenerators\InheritanceGeneratorsChildB"
18+
* })
19+
*/
20+
class InheritanceGeneratorsRoot
21+
{
22+
/**
23+
* @ORM\Column(type="integer")
24+
* @ORM\Id
25+
* @ORM\GeneratedValue(strategy="AUTO")
26+
* @var int|null
27+
*/
28+
private $id;
29+
30+
public function getId() : ?int
31+
{
32+
return $this->id;
33+
}
34+
}

tests/Doctrine/Tests/ORM/Functional/ValueGeneratorsTest.php

+30
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
use Doctrine\Tests\Models\ValueGenerators\BarGenerator;
77
use Doctrine\Tests\Models\ValueGenerators\CompositeGeneratedIdentifier;
88
use Doctrine\Tests\Models\ValueGenerators\FooGenerator;
9+
use Doctrine\Tests\Models\ValueGenerators\InheritanceGeneratorsChildA;
10+
use Doctrine\Tests\Models\ValueGenerators\InheritanceGeneratorsChildB;
11+
use Doctrine\Tests\Models\ValueGenerators\InheritanceGeneratorsRoot;
912
use Doctrine\Tests\Models\ValueGenerators\NonIdentifierGenerators;
1013
use Doctrine\Tests\OrmFunctionalTestCase;
1114

@@ -52,4 +55,31 @@ public function testNonIdentifierGenerators() : void
5255
$entity = $this->getEntityManager()->find(NonIdentifierGenerators::class, $entity->getId());
5356
self::assertNotNull($entity);
5457
}
58+
59+
public function testValueGeneratorsInInheritance() : void
60+
{
61+
$rootEntity = new InheritanceGeneratorsRoot();
62+
63+
$this->em->persist($rootEntity);
64+
$this->em->flush();
65+
66+
$this->assertNotNull($rootEntity->getId());
67+
68+
$childAEntity = new InheritanceGeneratorsChildA();
69+
70+
$this->em->persist($childAEntity);
71+
$this->em->flush();
72+
73+
$this->assertNotNull($childAEntity);
74+
$this->assertSame(FooGenerator::VALUE, $childAEntity->getA());
75+
76+
$childBEntity = new InheritanceGeneratorsChildB();
77+
78+
$this->em->persist($childBEntity);
79+
$this->em->flush();
80+
81+
$this->assertNotNull($childBEntity);
82+
$this->assertSame(FooGenerator::VALUE, $childBEntity->getA());
83+
$this->assertSame(BarGenerator::VALUE, $childBEntity->getB());
84+
}
5585
}

tests/Doctrine/Tests/OrmFunctionalTestCase.php

+4
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,9 @@ abstract class OrmFunctionalTestCase extends OrmTestCase
318318
'valueGenerators' => [
319319
Models\ValueGenerators\CompositeGeneratedIdentifier::class,
320320
Models\ValueGenerators\NonIdentifierGenerators::class,
321+
Models\ValueGenerators\InheritanceGeneratorsRoot::class,
322+
Models\ValueGenerators\InheritanceGeneratorsChildA::class,
323+
Models\ValueGenerators\InheritanceGeneratorsChildB::class,
321324
],
322325
];
323326

@@ -607,6 +610,7 @@ protected function tearDown()
607610
if (isset($this->usedModelSets['value_generators'])) {
608611
$conn->executeUpdate('DELETE FROM vg_composite_generated_identifier');
609612
$conn->executeUpdate('DELETE FROM vg_non_identifier_generators');
613+
$conn->executeUpdate('DELETE FROM vg_inheritance_generators');
610614
}
611615

612616
$this->em->clear();

0 commit comments

Comments
 (0)