Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC1595Test.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Functional\Ticket;
4
5 /**
6  * @group DDC-1595
7  * @group DDC-1596
8  */
9 class DDC1595Test extends \Doctrine\Tests\OrmFunctionalTestCase
10 {
11     public function setUp()
12     {
13         parent::setUp();
14
15         $this->_em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\DebugStack);
16
17         $this->_schemaTool->createSchema(array(
18             $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1595BaseInheritance'),
19             $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1595InheritedEntity1'),
20             $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1595InheritedEntity2'),
21         ));
22     }
23
24     public function testIssue()
25     {
26         $e1 = new DDC1595InheritedEntity1();
27
28         $this->_em->persist($e1);
29         $this->_em->flush();
30         $this->_em->clear();
31
32         $sqlLogger  = $this->_em->getConnection()->getConfiguration()->getSQLLogger();
33         $repository = $this->_em->getRepository(__NAMESPACE__ . '\\DDC1595InheritedEntity1');
34
35         $entity1  = $repository->find($e1->id);
36
37         // DDC-1596
38         $this->assertEquals(
39             "SELECT t0.id AS id1, t0.type FROM base t0 WHERE t0.id = ? AND t0.type IN ('Entity1')",
40             $sqlLogger->queries[count($sqlLogger->queries)]['sql']
41         );
42
43         $entities = $entity1->getEntities()->getValues();
44
45         $this->assertEquals(
46             "SELECT t0.id AS id1, t0.type FROM base t0 INNER JOIN entity1_entity2 ON t0.id = entity1_entity2.item WHERE entity1_entity2.parent = ? AND t0.type IN ('Entity2')",
47             $sqlLogger->queries[count($sqlLogger->queries)]['sql']
48         );
49
50         $this->_em->clear();
51
52         $entity1  = $repository->find($e1->id);
53         $entities = $entity1->getEntities()->count();
54
55         $this->assertEquals(
56             "SELECT COUNT(*) FROM entity1_entity2 t WHERE parent = ?",
57             $sqlLogger->queries[count($sqlLogger->queries)]['sql']
58         );
59     }
60 }
61
62 /**
63  * @Entity
64  * @Table(name="base")
65  *
66  * @InheritanceType("SINGLE_TABLE")
67  * @DiscriminatorColumn(name="type", type="string")
68  * @DiscriminatorMap({
69  *     "Entity1" = "DDC1595InheritedEntity1",
70  *     "Entity2" = "DDC1595InheritedEntity2"
71  * })
72  */
73 abstract class DDC1595BaseInheritance
74 {
75     /**
76      * @Id @GeneratedValue
77      * @Column(type="integer")
78      *
79      * @var integer
80      */
81     public $id;
82 }
83
84 /**
85  * @Entity
86  * @Table(name="entity1")
87  */
88 class DDC1595InheritedEntity1 extends DDC1595BaseInheritance
89 {
90     /**
91      * @ManyToMany(targetEntity="DDC1595InheritedEntity2", fetch="EXTRA_LAZY")
92      * @JoinTable(name="entity1_entity2",
93      *     joinColumns={@JoinColumn(name="parent", referencedColumnName="id")},
94      *     inverseJoinColumns={@JoinColumn(name="item", referencedColumnName="id")}
95      * )
96      */
97     protected $entities;
98
99     public function getEntities()
100     {
101         return $this->entities;
102     }
103 }
104
105 /**
106  * @Entity
107  * @Table(name="entity2")
108  */
109 class DDC1595InheritedEntity2 extends DDC1595BaseInheritance
110 {
111 }