Completed
Pull Request — master (#5823)
by Mikhail
13:41
created

DDC2256Test   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9
Metric Value
wmc 2
lcom 1
cbo 9
dl 0
loc 50
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B testIssue() 0 38 1
A setUp() 0 8 1
1
<?php
2
3
namespace Doctrine\Tests\ORM\Functional\Ticket;
4
5
use Doctrine\ORM\Query\ResultSetMapping;
6
use Doctrine\ORM\Query\ResultSetMappingBuilder;
7
8
/**
9
 * @group DDC-2256
10
 */
11
class DDC2256Test extends \Doctrine\Tests\OrmFunctionalTestCase
12
{
13
    protected function setUp()
14
    {
15
        parent::setUp();
16
        $this->_schemaTool->createSchema(array(
17
            $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC2256User'),
18
            $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC2256Group')
19
        ));
20
    }
21
22
    public function testIssue()
23
    {
24
        $config = $this->_em->getConfiguration();
25
        $config->addEntityNamespace('MyNamespace', 'Doctrine\Tests\ORM\Functional\Ticket');
26
27
        $user = new DDC2256User();
28
        $user->name = 'user';
29
        $group = new DDC2256Group();
30
        $group->name = 'group';
31
        $user->group = $group;
32
33
        $this->_em->persist($user);
34
        $this->_em->persist($group);
35
        $this->_em->flush();
36
        $this->_em->clear();
37
38
        $sql = 'SELECT u.id, u.name, g.id as group_id, g.name as group_name FROM ddc2256_users u LEFT JOIN ddc2256_groups g ON u.group_id = g.id';
39
40
        // Test ResultSetMapping.
41
        $rsm = new ResultSetMapping();
42
43
        $rsm->addEntityResult('MyNamespace:DDC2256User', 'u');
44
        $rsm->addFieldResult('u', 'id', 'id');
45
        $rsm->addFieldResult('u', 'name', 'name');
46
47
        $rsm->addJoinedEntityResult('MyNamespace:DDC2256Group', 'g', 'u', 'group');
48
        $rsm->addFieldResult('g', 'group_id', 'id');
49
        $rsm->addFieldResult('g', 'group_name', 'name');
50
51
        $this->_em->createNativeQuery($sql, $rsm)->getResult();
52
53
        // Test ResultSetMappingBuilder.
54
        $rsm = new ResultSetMappingBuilder($this->_em);
55
        $rsm->addRootEntityFromClassMetadata('MyNamespace:DDC2256User', 'u');
56
        $rsm->addJoinedEntityFromClassMetadata('MyNamespace:DDC2256Group', 'g', 'u', 'group', array('id' => 'group_id', 'name' => 'group_name'));
57
58
        $this->_em->createNativeQuery($sql, $rsm)->getResult();
59
    }
60
}
61
62
/**
63
 * @Entity
64
 * @Table(name="ddc2256_users")
65
 */
66
class DDC2256User
67
{
68
    /**
69
     * @Id
70
     * @Column(type="integer")
71
     * @GeneratedValue(strategy="AUTO")
72
     */
73
    public $id;
74
75
    /**
76
     * @Column(type="string")
77
     */
78
    public $name;
79
80
    /**
81
     * @ManyToOne(targetEntity="DDC2256Group", inversedBy="users")A
82
     * @JoinColumn(name="group_id")
83
     */
84
    public $group;
85
}
86
87
/**
88
 * @Entity
89
 * @Table(name="ddc2256_groups")
90
 */
91
class DDC2256Group
92
{
93
    /**
94
     * @Id
95
     * @Column(type="integer")
96
     * @GeneratedValue(strategy="AUTO")
97
     */
98
    public $id;
99
100
    /**
101
     * @Column(type="string")
102
     */
103
    public $name;
104
105
    /**
106
     * @OneToMany(targetEntity="DDC2256User", mappedBy="group")
107
     */
108
    public $users;
109
110
    public function __construct()
111
    {
112
        $this->users = new \Doctrine\Common\Collections\ArrayCollection();
113
    }
114
}
115
116