ManyToManyEventTest.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. * ManyToManyEventTest
  9. *
  10. * @author Francisco Facioni <fran6co@gmail.com>
  11. */
  12. class ManyToManyEventTest extends \Doctrine\Tests\OrmFunctionalTestCase
  13. {
  14. /**
  15. * @var PostUpdateListener
  16. */
  17. private $listener;
  18. protected function setUp()
  19. {
  20. $this->useModelSet('cms');
  21. parent::setUp();
  22. $this->listener = new PostUpdateListener();
  23. $evm = $this->_em->getEventManager();
  24. $evm->addEventListener(Events::postUpdate, $this->listener);
  25. }
  26. public function testListenerShouldBeNotifiedOnlyWhenUpdating()
  27. {
  28. $user = $this->createNewValidUser();
  29. $this->_em->persist($user);
  30. $this->_em->flush();
  31. $this->assertFalse($this->listener->wasNotified);
  32. $group = new CmsGroup();
  33. $group->name = "admins";
  34. $user->addGroup($group);
  35. $this->_em->persist($user);
  36. $this->_em->flush();
  37. $this->assertTrue($this->listener->wasNotified);
  38. }
  39. /**
  40. * @return CmsUser
  41. */
  42. private function createNewValidUser()
  43. {
  44. $user = new CmsUser();
  45. $user->username = 'fran6co';
  46. $user->name = 'Francisco Facioni';
  47. $group = new CmsGroup();
  48. $group->name = "users";
  49. $user->addGroup($group);
  50. return $user;
  51. }
  52. }
  53. class PostUpdateListener
  54. {
  55. /**
  56. * @var bool
  57. */
  58. public $wasNotified = false;
  59. /**
  60. * @param $args
  61. */
  62. public function postUpdate($args)
  63. {
  64. $this->wasNotified = true;
  65. }
  66. }