Completed
Push — master ( 92445d...0822f8 )
by Marco
23:45 queued 16:25
created

GH6937Test::testPhoneNumberIsPopulatedWithFind()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

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