Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / PostFlushEventTest.php
1 <?php
2 namespace Doctrine\Tests\ORM\Functional;
3 use Doctrine\Tests\Models\CMS\CmsUser;
4 use Doctrine\ORM\Event\PostFlushEventArgs;
5 use Doctrine\ORM\Events;
6 require_once __DIR__ . '/../../TestInit.php';
7
8 /**
9  * PostFlushEventTest
10  *
11  * @author Daniel Freudenberger <df@rebuy.de>
12  */
13 class PostFlushEventTest extends \Doctrine\Tests\OrmFunctionalTestCase
14 {
15     /**
16      * @var PostFlushListener
17      */
18     private $listener;
19
20     protected function setUp()
21     {
22         $this->useModelSet('cms');
23         parent::setUp();
24         $this->listener = new PostFlushListener();
25         $evm = $this->_em->getEventManager();
26         $evm->addEventListener(Events::postFlush, $this->listener);
27     }
28
29     public function testListenerShouldBeNotified()
30     {
31         $this->_em->persist($this->createNewValidUser());
32         $this->_em->flush();
33         $this->assertTrue($this->listener->wasNotified);
34     }
35
36     public function testListenerShouldNotBeNotifiedWhenFlushThrowsException()
37     {
38         $user = new CmsUser();
39         $user->username = 'dfreudenberger';
40         $this->_em->persist($user);
41         $exceptionRaised = false;
42
43         try {
44             $this->_em->flush();
45         } catch (\Exception $ex) {
46             $exceptionRaised = true;
47         }
48
49         $this->assertTrue($exceptionRaised);
50         $this->assertFalse($this->listener->wasNotified);
51     }
52
53     public function testListenerShouldReceiveEntityManagerThroughArgs()
54     {
55         $this->_em->persist($this->createNewValidUser());
56         $this->_em->flush();
57         $receivedEm = $this->listener->receivedArgs->getEntityManager();
58         $this->assertSame($this->_em, $receivedEm);
59     }
60
61     /**
62      * @return CmsUser
63      */
64     private function createNewValidUser()
65     {
66         $user = new CmsUser();
67         $user->username = 'dfreudenberger';
68         $user->name = 'Daniel Freudenberger';
69         return $user;
70     }
71 }
72
73 class PostFlushListener
74 {
75     /**
76      * @var bool
77      */
78     public $wasNotified = false;
79
80     /**
81      * @var PostFlushEventArgs
82      */
83     public $receivedArgs;
84
85     /**
86      * @param PostFlushEventArgs $args
87      */
88     public function postFlush(PostFlushEventArgs $args)
89     {
90         $this->wasNotified = true;
91         $this->receivedArgs = $args;
92     }
93 }
94
95