Failed Conditions
Pull Request — master (#7688)
by Gabriel
09:49
created

testInstanceOf()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 10
nc 1
nop 0
dl 0
loc 15
rs 9.9332
c 0
b 0
f 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\Tests\OrmFunctionalTestCase;
9
10
class Ticket4646InstanceOfWithMultipleParametersTest extends OrmFunctionalTestCase
11
{
12
    protected function setUp() : void
13
    {
14
        parent::setUp();
15
16
        $this->schemaTool->createSchema([
17
            $this->em->getClassMetadata(PersonTicket4646Multiple::class),
18
            $this->em->getClassMetadata(EmployeeTicket4646Multiple::class),
19
            $this->em->getClassMetadata(ManagerTicket4646Multiple::class),
20
            $this->em->getClassMetadata(InternTicket4646Multiple::class),
21
        ]);
22
    }
23
24
    public function testInstanceOf() : void
25
    {
26
        $this->em->persist(new PersonTicket4646Multiple());
27
        $this->em->persist(new EmployeeTicket4646Multiple());
28
        $this->em->persist(new ManagerTicket4646Multiple());
29
        $this->em->persist(new InternTicket4646Multiple());
30
        $this->em->flush();
31
32
        $dql    = 'SELECT p FROM Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646Multiple p
33
                WHERE p INSTANCE OF (Doctrine\Tests\ORM\Functional\Ticket\EmployeeTicket4646Multiple, Doctrine\Tests\ORM\Functional\Ticket\InternTicket4646Multiple)';
34
        $query  = $this->em->createQuery($dql);
35
        $result = $query->getResult();
36
37
        self::assertCount(2, $result);
38
        self::assertContainsOnlyInstancesOf(PersonTicket4646Multiple::class, $result);
39
    }
40
}
41
42
/**
43
 * @ORM\Entity()
44
 * @ORM\Table(name="instance_of_test_multiple_person")
45
 * @ORM\InheritanceType(value="JOINED")
46
 * @ORM\DiscriminatorColumn(name="kind", type="string")
47
 * @ORM\DiscriminatorMap(value={
48
 *     "person": "Doctrine\Tests\ORM\Functional\Ticket\PersonTicket4646Multiple",
49
 *     "employee": "Doctrine\Tests\ORM\Functional\Ticket\EmployeeTicket4646Multiple",
50
 *     "manager": "Doctrine\Tests\ORM\Functional\Ticket\ManagerTicket4646Multiple",
51
 *     "intern": "Doctrine\Tests\ORM\Functional\Ticket\InternTicket4646Multiple"
52
 * })
53
 */
54
class PersonTicket4646Multiple
55
{
56
    /**
57
     * @ORM\Id()
58
     * @ORM\GeneratedValue()
59
     * @ORM\Column(type="integer")
60
     */
61
    private $id;
62
63
    public function getId()
64
    {
65
        return $this->id;
66
    }
67
}
68
69
/**
70
 * @ORM\Entity()
71
 * @ORM\Table(name="instance_of_test_multiple_employee")
72
 */
73
class EmployeeTicket4646Multiple extends PersonTicket4646Multiple
74
{
75
}
76
77
/**
78
 * @ORM\Entity()
79
 * @ORM\Table(name="instance_of_test_multiple_manager")
80
 */
81
class ManagerTicket4646Multiple extends PersonTicket4646Multiple
82
{
83
}
84
85
/**
86
 * @ORM\Entity()
87
 * @ORM\Table(name="instance_of_test_multiple_intern")
88
 */
89
class InternTicket4646Multiple extends PersonTicket4646Multiple
90
{
91
}
92