Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC809Test.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Functional\Ticket;
4
5 use Doctrine\Common\Collections\ArrayCollection;
6 use Doctrine\Tests\Models\CMS\CmsUser;
7 use Doctrine\Tests\Models\CMS\CmsGroup;
8
9 require_once __DIR__ . '/../../../TestInit.php';
10
11 class DDC809Test extends \Doctrine\Tests\OrmFunctionalTestCase
12 {
13     public function setUp()
14     {
15         parent::setUp();
16         $this->_schemaTool->createSchema(array(
17             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC809Variant'),
18             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC809SpecificationValue')
19         ));
20
21         $conn = $this->_em->getConnection();
22         $conn->insert('specification_value_test', array('specification_value_id' => 94589));
23         $conn->insert('specification_value_test', array('specification_value_id' => 94593));
24         $conn->insert('specification_value_test', array('specification_value_id' => 94606));
25         $conn->insert('specification_value_test', array('specification_value_id' => 94607));
26         $conn->insert('specification_value_test', array('specification_value_id' => 94609));
27         $conn->insert('specification_value_test', array('specification_value_id' => 94711));
28
29         $conn->insert('variant_test', array('variant_id' => 545208));
30         $conn->insert('variant_test', array('variant_id' => 545209));
31
32         $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94606));
33         $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94607));
34         $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94609));
35         $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94711));
36
37         $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94589));
38         $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94593));
39         $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94606));
40         $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94607));
41     }
42
43     /**
44      * @group DDC-809
45      */
46     public function testIssue()
47     {
48         $result = $this->_em->createQueryBuilder()
49                         ->select('Variant, SpecificationValue')
50                         ->from('Doctrine\Tests\ORM\Functional\Ticket\DDC809Variant', 'Variant')
51                         ->leftJoin('Variant.SpecificationValues', 'SpecificationValue')
52                         ->getQuery()
53                         ->getResult();
54
55         $this->assertEquals(4, count($result[0]->getSpecificationValues()), "Works in test-setup.");
56         $this->assertEquals(4, count($result[1]->getSpecificationValues()), "Only returns 2 in the case of the hydration bug.");
57     }
58 }
59
60 /**
61  * @Table(name="variant_test")
62  * @Entity
63  */
64 class DDC809Variant
65 {
66     /**
67      * @Column(name="variant_id", type="integer")
68      * @Id
69      */
70     protected $variantId;
71
72     /**
73      * @ManyToMany(targetEntity="DDC809SpecificationValue", inversedBy="Variants")
74      * @JoinTable(name="var_spec_value_test",
75      *   joinColumns={
76      *     @JoinColumn(name="variant_id", referencedColumnName="variant_id")
77      *   },
78      *   inverseJoinColumns={
79      *     @JoinColumn(name="specification_value_id", referencedColumnName="specification_value_id")
80      *   }
81      * )
82      */
83     protected $SpecificationValues;
84
85     public function getSpecificationValues()
86     {
87         return $this->SpecificationValues;
88     }
89 }
90
91 /**
92  * @Table(name="specification_value_test")
93  * @Entity
94  */
95 class DDC809SpecificationValue
96 {
97     /**
98      * @Column(name="specification_value_id", type="integer")
99      * @Id
100      */
101     protected $specificationValueId;
102
103     /**
104      * @var Variant
105      *
106      * @ManyToMany(targetEntity="DDC809Variant", mappedBy="SpecificationValues")
107      */
108     protected $Variants;
109 }