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';
11 * @author Daniel Freudenberger <df@rebuy.de>
13 class PostFlushEventTest extends \Doctrine\Tests\OrmFunctionalTestCase
16 * @var PostFlushListener
20 protected function setUp()
22 $this->useModelSet('cms');
24 $this->listener = new PostFlushListener();
25 $evm = $this->_em->getEventManager();
26 $evm->addEventListener(Events::postFlush, $this->listener);
29 public function testListenerShouldBeNotified()
31 $this->_em->persist($this->createNewValidUser());
33 $this->assertTrue($this->listener->wasNotified);
36 public function testListenerShouldNotBeNotifiedWhenFlushThrowsException()
38 $user = new CmsUser();
39 $user->username = 'dfreudenberger';
40 $this->_em->persist($user);
41 $exceptionRaised = false;
45 } catch (\Exception $ex) {
46 $exceptionRaised = true;
49 $this->assertTrue($exceptionRaised);
50 $this->assertFalse($this->listener->wasNotified);
53 public function testListenerShouldReceiveEntityManagerThroughArgs()
55 $this->_em->persist($this->createNewValidUser());
57 $receivedEm = $this->listener->receivedArgs->getEntityManager();
58 $this->assertSame($this->_em, $receivedEm);
64 private function createNewValidUser()
66 $user = new CmsUser();
67 $user->username = 'dfreudenberger';
68 $user->name = 'Daniel Freudenberger';
73 class PostFlushListener
78 public $wasNotified = false;
81 * @var PostFlushEventArgs
86 * @param PostFlushEventArgs $args
88 public function postFlush(PostFlushEventArgs $args)
90 $this->wasNotified = true;
91 $this->receivedArgs = $args;