Passed
Push — 2.6 ( 1f82a2...a736a3 )
by Marco
16:29 queued 08:32
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
8
/**
9
 * @group 6937
10
 */
11
final class GH6937Test extends OrmFunctionalTestCase
12
{
13
    /**
14
     * {@inheritDoc}
15
     */
16
    protected function setUp() : void
17
    {
18
        parent::setUp();
19
20
        $this->setUpEntitySchema([GH6937Person::class, GH6937Employee::class, GH6937Manager::class]);
21
    }
22
23
    public function testPhoneNumberIsPopulatedWithFind() : void
24
    {
25
        $manager              = new GH6937Manager();
26
        $manager->name        = 'Kevin';
27
        $manager->phoneNumber = '555-5555';
28
        $manager->department  = 'Accounting';
29
30
        $this->_em->persist($manager);
31
        $this->_em->flush();
32
        $this->_em->clear();
33
34
        $persistedManager = $this->_em->find(GH6937Person::class, $manager->id);
35
36
        self::assertSame('Kevin', $persistedManager->name);
37
        self::assertSame('555-5555', $persistedManager->phoneNumber);
38
        self::assertSame('Accounting', $persistedManager->department);
39
    }
40
41
    public function testPhoneNumberIsPopulatedWithQueryBuilderUsingSimpleObjectHydrator() : void
42
    {
43
        $manager              = new GH6937Manager();
44
        $manager->name        = 'Kevin';
45
        $manager->phoneNumber = '555-5555';
46
        $manager->department  = 'Accounting';
47
48
        $this->_em->persist($manager);
49
        $this->_em->flush();
50
        $this->_em->clear();
51
52
        $persistedManager = $this->_em->getRepository(GH6937Person::class)
53
                                      ->createQueryBuilder('e')
54
                                      ->where('e.id = :id')
55
                                      ->setParameter('id', $manager->id)
56
                                      ->getQuery()
57
                                      ->getOneOrNullResult(AbstractQuery::HYDRATE_SIMPLEOBJECT);
58
59
        self::assertSame('Kevin', $persistedManager->name);
60
        self::assertSame('555-5555', $persistedManager->phoneNumber);
61
        self::assertSame('Accounting', $persistedManager->department);
62
    }
63
64
    public function testPhoneNumberIsPopulatedWithQueryBuilder() : void
65
    {
66
        $manager              = new GH6937Manager();
67
        $manager->name        = 'Kevin';
68
        $manager->phoneNumber = '555-5555';
69
        $manager->department  = 'Accounting';
70
71
        $this->_em->persist($manager);
72
        $this->_em->flush();
73
        $this->_em->clear();
74
75
        $persistedManager = $this->_em->getRepository(GH6937Person::class)
76
                                      ->createQueryBuilder('e')
77
                                      ->where('e.id = :id')
78
                                      ->setParameter('id', $manager->id)
79
                                      ->getQuery()
80
                                      ->getOneOrNullResult();
81
82
        self::assertSame('Kevin', $persistedManager->name);
83
        self::assertSame('555-5555', $persistedManager->phoneNumber);
84
        self::assertSame('Accounting', $persistedManager->department);
85
    }
86
}
87
88
/**
89
 * @Entity
90
 * @InheritanceType("JOINED")
91
 * @DiscriminatorColumn(name="discr", type="string")
92
 * @DiscriminatorMap({"employee"=GH6937Employee::class, "manager"=GH6937Manager::class})
93
 */
94
abstract class GH6937Person
95
{
96
    /** @Id @Column(type="integer") @GeneratedValue */
97
    public $id;
98
99
    /** @Column(type="string") */
100
    public $name;
101
}
102
103
/**
104
 * @Entity
105
 */
106
abstract class GH6937Employee extends GH6937Person
107
{
108
    /** @Column(type="string") */
109
    public $phoneNumber;
110
}
111
112
/**
113
 * @Entity
114
 */
115
class GH6937Manager extends GH6937Employee
116
{
117
    /** @Column(type="string") */
118
    public $department;
119
}
120