ManyToManyEventTest.php 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. $user->status = 'foo';
  48. $group = new CmsGroup();
  49. $group->name = "users";
  50. $user->addGroup($group);
  51. return $user;
  52. }
  53. }
  54. class PostUpdateListener
  55. {
  56. /**
  57. * @var bool
  58. */
  59. public $wasNotified = false;
  60. /**
  61. * @param $args
  62. */
  63. public function postUpdate($args)
  64. {
  65. $this->wasNotified = true;
  66. }
  67. }