Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / ManyToManyEventTest.php
1 <?php
2 namespace Doctrine\Tests\ORM\Functional;
3 use Doctrine\Tests\Models\CMS\CmsUser;
4 use Doctrine\Tests\Models\CMS\CmsGroup;
5 use Doctrine\ORM\Events;
6 require_once __DIR__ . '/../../TestInit.php';
7
8 /**
9  * ManyToManyEventTest
10  *
11  * @author Francisco Facioni <fran6co@gmail.com>
12  */
13 class ManyToManyEventTest extends \Doctrine\Tests\OrmFunctionalTestCase
14 {
15     /**
16      * @var PostUpdateListener
17      */
18     private $listener;
19
20     protected function setUp()
21     {
22         $this->useModelSet('cms');
23         parent::setUp();
24         $this->listener = new PostUpdateListener();
25         $evm = $this->_em->getEventManager();
26         $evm->addEventListener(Events::postUpdate, $this->listener);
27     }
28
29     public function testListenerShouldBeNotifiedOnlyWhenUpdating()
30     {
31         $user = $this->createNewValidUser();
32         $this->_em->persist($user);
33         $this->_em->flush();
34         $this->assertFalse($this->listener->wasNotified);
35
36         $group = new CmsGroup();
37         $group->name = "admins";
38         $user->addGroup($group);
39         $this->_em->persist($user);
40         $this->_em->flush();
41
42         $this->assertTrue($this->listener->wasNotified);
43     }
44
45     /**
46      * @return CmsUser
47      */
48     private function createNewValidUser()
49     {
50         $user = new CmsUser();
51         $user->username = 'fran6co';
52         $user->name = 'Francisco Facioni';
53         $group = new CmsGroup();
54         $group->name = "users";
55         $user->addGroup($group);
56         return $user;
57     }
58 }
59
60 class PostUpdateListener
61 {
62     /**
63      * @var bool
64      */
65     public $wasNotified = false;
66
67     /**
68      * @param $args
69      */
70     public function postUpdate($args)
71     {
72         $this->wasNotified = true;
73     }
74 }
75
76