GH6937Test   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 52
c 2
b 0
f 0
dl 0
loc 80
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testPhoneNumberIsPopulatedWithFind() 0 16 1
A testPhoneNumberIsPopulatedWithQueryBuilder() 0 24 1
A testPhoneNumberIsPopulatedWithQueryBuilderUsingSimpleObjectHydrator() 0 24 1
A setUp() 0 5 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Tests\ORM\Functional\Ticket;
6
7
use Doctrine\ORM\AbstractQuery;
8
use Doctrine\ORM\Annotation as ORM;
9
use Doctrine\Tests\OrmFunctionalTestCase;
10
11
/**
12
 * @group 6937
13
 */
14
final class GH6937Test extends OrmFunctionalTestCase
15
{
16
    /**
17
     * {@inheritDoc}
18
     */
19
    protected function setUp() : void
20
    {
21
        parent::setUp();
22
23
        $this->setUpEntitySchema([GH6937Person::class, GH6937Employee::class, GH6937Manager::class]);
24
    }
25
26
    public function testPhoneNumberIsPopulatedWithFind() : void
27
    {
28
        $manager              = new GH6937Manager();
29
        $manager->name        = 'Kevin';
30
        $manager->phoneNumber = '555-5555';
31
        $manager->department  = 'Accounting';
32
33
        $this->em->persist($manager);
34
        $this->em->flush();
35
        $this->em->clear();
36
37
        $persistedManager = $this->em->find(GH6937Person::class, $manager->id);
38
39
        self::assertSame('Kevin', $persistedManager->name);
40
        self::assertSame('555-5555', $persistedManager->phoneNumber);
41
        self::assertSame('Accounting', $persistedManager->department);
42
    }
43
44
    public function testPhoneNumberIsPopulatedWithQueryBuilderUsingSimpleObjectHydrator() : void
45
    {
46
        $manager              = new GH6937Manager();
47
        $manager->name        = 'Kevin';
48
        $manager->phoneNumber = '555-5555';
49
        $manager->department  = 'Accounting';
50
51
        $this->em->persist($manager);
52
        $this->em->flush();
53
        $this->em->clear();
54
55
        $persistedManager = $this
56
            ->em
57
            ->createQueryBuilder()
58
            ->select('e')
59
            ->from(GH6937Person::class, 'e')
60
            ->where('e.id = :id')
61
            ->setParameter('id', $manager->id)
62
            ->getQuery()
63
            ->getOneOrNullResult(AbstractQuery::HYDRATE_SIMPLEOBJECT);
64
65
        self::assertSame('Kevin', $persistedManager->name);
66
        self::assertSame('555-5555', $persistedManager->phoneNumber);
67
        self::assertSame('Accounting', $persistedManager->department);
68
    }
69
70
    public function testPhoneNumberIsPopulatedWithQueryBuilder() : void
71
    {
72
        $manager              = new GH6937Manager();
73
        $manager->name        = 'Kevin';
74
        $manager->phoneNumber = '555-5555';
75
        $manager->department  = 'Accounting';
76
77
        $this->em->persist($manager);
78
        $this->em->flush();
79
        $this->em->clear();
80
81
        $persistedManager = $this
82
            ->em
83
            ->createQueryBuilder()
84
            ->select('e')
85
            ->from(GH6937Person::class, 'e')
86
            ->where('e.id = :id')
87
            ->setParameter('id', $manager->id)
88
            ->getQuery()
89
            ->getOneOrNullResult();
90
91
        self::assertSame('Kevin', $persistedManager->name);
92
        self::assertSame('555-5555', $persistedManager->phoneNumber);
93
        self::assertSame('Accounting', $persistedManager->department);
94
    }
95
}
96
97
/**
98
 * @ORM\Entity
99
 * @ORM\InheritanceType("JOINED")
100
 * @ORM\DiscriminatorColumn(name="discr", type="string")
101
 * @ORM\DiscriminatorMap({"employee"=GH6937Employee::class, "manager"=GH6937Manager::class})
102
 */
103
abstract class GH6937Person
104
{
105
    /** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue */
106
    public $id;
107
108
    /** @ORM\Column(type="string") */
109
    public $name;
110
}
111
112
/**
113
 * @ORM\Entity
114
 */
115
abstract class GH6937Employee extends GH6937Person
116
{
117
    /** @ORM\Column(type="string") */
118
    public $phoneNumber;
119
}
120
121
/**
122
 * @ORM\Entity
123
 */
124
class GH6937Manager extends GH6937Employee
125
{
126
    /** @ORM\Column(type="string") */
127
    public $department;
128
}
129