Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / OneToOneOrphanRemovalTest.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Functional;
4
5 use Doctrine\Tests\Models\CMS\CmsUser,
6     Doctrine\Tests\Models\CMS\CmsEmail,
7     Doctrine\Tests\Models\CMS\CmsAddress,
8     Doctrine\Tests\Models\CMS\CmsPhonenumber;
9
10 require_once __DIR__ . '/../../TestInit.php';
11
12 /**
13  * Tests a bidirectional one-to-one association mapping with orphan removal.
14  */
15 class OneToOneOrphanRemovalTest extends \Doctrine\Tests\OrmFunctionalTestCase
16 {
17     protected function setUp()
18     {
19         $this->useModelSet('cms');
20
21         parent::setUp();
22     }
23
24     public function testOrphanRemoval()
25     {
26         $user = new CmsUser;
27         $user->status = 'dev';
28         $user->username = 'romanb';
29         $user->name = 'Roman B.';
30
31         $address = new CmsAddress;
32         $address->country = 'de';
33         $address->zip = 1234;
34         $address->city = 'Berlin';
35
36         $user->setAddress($address);
37
38         $this->_em->persist($user);
39         $this->_em->flush();
40
41         $userId = $user->getId();
42
43         $this->_em->clear();
44
45         $userProxy = $this->_em->getReference('Doctrine\Tests\Models\CMS\CmsUser', $userId);
46
47         $this->_em->remove($userProxy);
48         $this->_em->flush();
49         $this->_em->clear();
50
51         $query  = $this->_em->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u');
52         $result = $query->getResult();
53
54         $this->assertEquals(0, count($result), 'CmsUser should be removed by EntityManager');
55
56         $query  = $this->_em->createQuery('SELECT a FROM Doctrine\Tests\Models\CMS\CmsAddress a');
57         $result = $query->getResult();
58
59         $this->assertEquals(0, count($result), 'CmsAddress should be removed by orphanRemoval');
60     }
61
62     public function testOrphanRemovalWhenUnlink()
63     {
64         $user = new CmsUser;
65         $user->status = 'dev';
66         $user->username = 'beberlei';
67         $user->name = 'Bejamin Eberlei';
68
69         $email = new CmsEmail;
70         $email->email = 'beberlei@domain.com';
71
72         $user->setEmail($email);
73
74         $this->_em->persist($user);
75         $this->_em->flush();
76
77         $userId = $user->getId();
78
79         $this->_em->clear();
80
81         $user = $this->_em->find('Doctrine\Tests\Models\CMS\CmsUser', $userId);
82
83         $user->setEmail(null);
84
85         $this->_em->persist($user);
86         $this->_em->flush();
87         $this->_em->clear();
88
89         $query  = $this->_em->createQuery('SELECT e FROM Doctrine\Tests\Models\CMS\CmsEmail e');
90         $result = $query->getResult();
91
92         $this->assertEquals(0, count($result), 'CmsEmail should be removed by orphanRemoval');
93     }
94 }