Completed
Push — 2.6 ( adfd01...c62977 )
by Guilherme
52:46 queued 52:41
created

GH7869Test::testDQLDeferredEagerLoad()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
c 1
b 0
f 0
dl 0
loc 22
rs 9.7666
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Tests\ORM\Functional\Ticket;
6
7
use Doctrine\ORM\Decorator\EntityManagerDecorator;
8
use Doctrine\ORM\Mapping\ClassMetadata;
9
use Doctrine\ORM\UnitOfWork;
10
use Doctrine\Tests\Mocks\ConnectionMock;
11
use Doctrine\Tests\Mocks\DriverMock;
12
use Doctrine\Tests\Mocks\EntityManagerMock;
13
use Doctrine\Tests\OrmTestCase;
14
15
/**
16
 * @group GH7869
17
 */
18
class GH7869Test extends OrmTestCase
19
{
20
    public function testDQLDeferredEagerLoad()
21
    {
22
        $decoratedEm = EntityManagerMock::create(new ConnectionMock([], new DriverMock()));
23
24
        $em = $this->getMockBuilder(EntityManagerDecorator::class)
25
            ->setConstructorArgs([$decoratedEm])
26
            ->setMethods(['getClassMetadata'])
27
            ->getMock();
28
29
        $em->expects($this->exactly(2))
30
            ->method('getClassMetadata')
31
            ->willReturnCallback([$decoratedEm, 'getClassMetadata']);
32
33
        $hints = [
34
            UnitOfWork::HINT_DEFEREAGERLOAD => true,
35
            'fetchMode' => [GH7869Appointment::class => ['patient' => ClassMetadata::FETCH_EAGER]],
36
        ];
37
38
        $uow = new UnitOfWork($em);
39
        $uow->createEntity(GH7869Appointment::class, ['id' => 1, 'patient_id' => 1], $hints);
40
        $uow->clear();
41
        $uow->triggerEagerLoads();
42
    }
43
}
44
45
/**
46
 * @Entity
47
 */
48
class GH7869Appointment
49
{
50
    /** @Id @Column(type="integer") @GeneratedValue */
51
    public $id;
52
53
    /** @OneToOne(targetEntity="GH7869Patient", inversedBy="appointment", fetch="EAGER") */
54
    public $patient;
55
}
56
57
/**
58
 * @Entity
59
 */
60
class GH7869Patient
61
{
62
    /** @Id @Column(type="integer") @GeneratedValue */
63
    public $id;
64
65
    /** @OneToOne(targetEntity="GH7869Appointment", mappedBy="patient") */
66
    public $appointment;
67
}
68