Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC1885Test.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Functional\Ticket;
4
5 use Doctrine\Tests\Models\Quote\Group;
6 use Doctrine\Tests\Models\Quote\User;
7
8 /**
9  * @group DDC-1845
10  * @group DDC-1885
11  */
12 class DDC1885Test extends \Doctrine\Tests\OrmFunctionalTestCase
13 {
14
15     /**
16      * @var \Doctrine\Tests\Models\Quote\User
17      */
18     private $user;
19
20     protected function setUp()
21     {
22         parent::setUp();
23
24         try {
25             $this->_schemaTool->createSchema(array(
26                 $this->_em->getClassMetadata('Doctrine\Tests\Models\Quote\User'),
27                 $this->_em->getClassMetadata('Doctrine\Tests\Models\Quote\Group'),
28                 $this->_em->getClassMetadata('Doctrine\Tests\Models\Quote\Address'),
29             ));
30         } catch(\Exception $e) {
31         }
32
33         $user           = new User();
34         $user->name     = "FabioBatSilva";
35         $user->email    = "fabio.bat.silva@gmail.com";
36         $user->groups[] = new Group('G 1');
37         $user->groups[] = new Group('G 2');
38         $this->user     = $user;
39
40         // Create
41         $this->_em->persist($user);
42         $this->_em->flush();
43         $this->_em->clear();
44         
45     }
46
47     public function testCreateRetreaveUpdateDelete()
48     {
49         $user   = $this->user;
50         $g1     = $user->getGroups()->get(0);
51         $g2     = $user->getGroups()->get(1);
52
53         $u1Id   = $user->id;
54         $g1Id   = $g1->id;
55         $g2Id   = $g2->id;
56
57         // Retreave
58         $user = $this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id);
59
60         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\User', $user);
61         $this->assertEquals('FabioBatSilva', $user->name);
62         $this->assertEquals($u1Id, $user->id);
63         
64         $this->assertCount(2, $user->groups);
65
66         $g1 = $user->getGroups()->get(0);
67         $g2 = $user->getGroups()->get(1);
68
69         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $g1);
70         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $g2);
71
72         $g1->name = 'Bar 11';
73         $g2->name = 'Foo 22';
74
75         // Update
76         $this->_em->persist($user);
77         $this->_em->flush();
78         $this->_em->clear();
79
80         $user = $this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id);
81
82         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\User', $user);
83         $this->assertEquals('FabioBatSilva', $user->name);
84         $this->assertEquals($u1Id, $user->id);
85
86         // Delete
87         $this->_em->remove($user);
88         
89         $this->_em->flush();
90         $this->_em->clear();
91
92         $this->assertNull($this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id));
93         $this->assertNull($this->_em->find('Doctrine\Tests\Models\Quote\Group', $g1Id));
94         $this->assertNull($this->_em->find('Doctrine\Tests\Models\Quote\Group', $g2Id));
95     }
96
97     public function testRemoveItem()
98     {
99         $user   = $this->user;
100         $u1Id   = $user->id;
101         $user   = $this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id);
102
103         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\User', $user);
104         $this->assertEquals('FabioBatSilva', $user->name);
105         $this->assertEquals($u1Id, $user->id);
106
107         $this->assertCount(2, $user->groups);
108         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $user->getGroups()->get(0));
109         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $user->getGroups()->get(1));
110
111         $user->getGroups()->remove(0);
112
113         // Update
114         $this->_em->persist($user);
115         $this->_em->flush();
116         $this->_em->clear();
117
118         $user = $this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id);
119
120         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\User', $user);
121         $this->assertEquals('FabioBatSilva', $user->name);
122         $this->assertEquals($u1Id, $user->id);
123
124         $this->assertCount(1, $user->getGroups());
125     }
126
127     public function testClearAll()
128     {
129         $user   = $this->user;
130         $u1Id   = $user->id;
131         $user   = $this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id);
132
133         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\User', $user);
134         $this->assertEquals('FabioBatSilva', $user->name);
135         $this->assertEquals($u1Id, $user->id);
136
137         $this->assertCount(2, $user->groups);
138         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $user->getGroups()->get(0));
139         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $user->getGroups()->get(1));
140
141         $user->getGroups()->clear();
142
143         // Update
144         $this->_em->persist($user);
145         $this->_em->flush();
146         $this->_em->clear();
147
148         $user = $this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id);
149
150         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\User', $user);
151         $this->assertEquals('FabioBatSilva', $user->name);
152         $this->assertEquals($u1Id, $user->id);
153
154         $this->assertCount(0, $user->getGroups());
155     }
156
157     public function testCountExtraLazy()
158     {
159         $user   = $this->user;
160         $u1Id   = $user->id;
161         $user   = $this->_em->find('Doctrine\Tests\Models\Quote\User', $u1Id);
162
163         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\User', $user);
164         $this->assertEquals('FabioBatSilva', $user->name);
165         $this->assertEquals($u1Id, $user->id);
166
167         $this->assertCount(0, $user->extraLazyGroups);
168         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $user->getGroups()->get(0));
169         $this->assertInstanceOf('Doctrine\Tests\Models\Quote\Group', $user->getGroups()->get(1));
170     }
171 }