DDC3300ConcreteBoss
last analyzed

Complexity

Total Complexity 0

Size/Duplication

Total Lines 2
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 2
c 0
b 0
f 0
wmc 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Tests\ORM\Functional\Ticket;
6
7
use Doctrine\ORM\Annotation as ORM;
8
use Doctrine\ORM\Tools\ResolveTargetEntityListener;
9
use Doctrine\Tests\OrmFunctionalTestCase;
10
11
/**
12
 * @group DDC-3300
13
 */
14
class DDC3300Test extends OrmFunctionalTestCase
15
{
16
    public function testResolveTargetEntitiesChangesDiscriminatorMapValues() : void
17
    {
18
        $resolveTargetEntity = new ResolveTargetEntityListener();
19
20
        $resolveTargetEntity->addResolveTargetEntity(
21
            DDC3300Boss::class,
22
            DDC3300ConcreteBoss::class
23
        );
24
25
        $resolveTargetEntity->addResolveTargetEntity(
26
            DDC3300Employee::class,
27
            DDC3300ConcreteEmployee::class
28
        );
29
30
        $this->em->getEventManager()->addEventSubscriber($resolveTargetEntity);
31
32
        $this->schemaTool->createSchema([
33
            $this->em->getClassMetadata(DDC3300Person::class),
34
        ]);
35
36
        $boss     = new DDC3300ConcreteBoss();
37
        $employee = new DDC3300ConcreteEmployee();
38
39
        $this->em->persist($boss);
40
        $this->em->persist($employee);
41
42
        $this->em->flush();
43
        $this->em->clear();
44
45
        self::assertEquals($boss, $this->em->find(DDC3300Boss::class, $boss->id));
46
        self::assertEquals($employee, $this->em->find(DDC3300Employee::class, $employee->id));
47
    }
48
}
49
50
/**
51
 * @ORM\Entity
52
 * @ORM\InheritanceType("SINGLE_TABLE")
53
 * @ORM\DiscriminatorColumn(name="discr", type="string")
54
 * @ORM\DiscriminatorMap({
55
 *      "boss"     = DDC3300Boss::class,
56
 *      "employee" = DDC3300Employee::class
57
 * })
58
 */
59
abstract class DDC3300Person
60
{
61
    /** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue(strategy="AUTO") */
62
    public $id;
63
}
64
65
interface DDC3300Boss
66
{
67
}
68
69
/** @ORM\Entity */
70
class DDC3300ConcreteBoss extends DDC3300Person implements DDC3300Boss
71
{
72
}
73
74
interface DDC3300Employee
75
{
76
}
77
78
/** @ORM\Entity */
79
class DDC3300ConcreteEmployee extends DDC3300Person implements DDC3300Employee
80
{
81
}
82