EventFiredWithTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace Cake\Test\TestCase\TestSuite\Constraint;
  3. use Cake\Event\Event;
  4. use Cake\Event\EventList;
  5. use Cake\Event\EventManager;
  6. use Cake\TestSuite\Constraint\EventFiredWith;
  7. use Cake\TestSuite\TestCase;
  8. /**
  9. * EventFiredWith Test
  10. */
  11. class EventFiredWithTest extends TestCase
  12. {
  13. /**
  14. * tests EventFiredWith constraint
  15. *
  16. * @return void
  17. */
  18. public function testMatches()
  19. {
  20. $manager = EventManager::instance();
  21. $manager->setEventList(new EventList());
  22. $manager->trackEvents(true);
  23. $myEvent = new Event('my.event', $this, [
  24. 'key' => 'value',
  25. ]);
  26. $myOtherEvent = new Event('my.other.event', $this, [
  27. 'key' => null,
  28. ]);
  29. $manager->getEventList()->add($myEvent);
  30. $manager->getEventList()->add($myOtherEvent);
  31. $constraint = new EventFiredWith($manager, 'key', 'value');
  32. $this->assertTrue($constraint->matches('my.event'));
  33. $this->assertFalse($constraint->matches('my.other.event'));
  34. $this->assertFalse($constraint->matches('event.not.fired'));
  35. $constraint = new EventFiredWith($manager, 'key', null);
  36. $this->assertTrue($constraint->matches('my.other.event'));
  37. $this->assertFalse($constraint->matches('my.event'));
  38. }
  39. /**
  40. * tests trying to assert data key=>value when an event is fired multiple times
  41. *
  42. * @return void
  43. */
  44. public function testMatchesInvalid()
  45. {
  46. $this->expectException(\PHPUnit\Framework\AssertionFailedError::class);
  47. $manager = EventManager::instance();
  48. $manager->setEventList(new EventList());
  49. $manager->trackEvents(true);
  50. $myEvent = new Event('my.event', $this, [
  51. 'key' => 'value',
  52. ]);
  53. $manager->getEventList()->add($myEvent);
  54. $manager->getEventList()->add($myEvent);
  55. $constraint = new EventFiredWith($manager, 'key', 'value');
  56. $constraint->matches('my.event');
  57. }
  58. }