5 use Civi\Core\Event\GenericHookEvent
;
8 * Class CiviEventDispatcherTest
12 class CiviEventDispatcherTest
extends \CiviUnitTestCase
{
14 public function testDispatchPolicy_run() {
15 $d = new CiviEventDispatcher(\Civi
::container());
16 $d->setDispatchPolicy([
17 'hook_civicrm_fakeRunnable' => 'run',
20 $d->addListener('hook_civicrm_fakeRunnable', function() use (&$calls) {
21 $calls['hook_civicrm_fakeRunnable'] = 1;
23 $d->dispatch('hook_civicrm_fakeRunnable', GenericHookEvent
::create([]));
24 $this->assertEquals(1, $calls['hook_civicrm_fakeRunnable']);
27 public function testDispatchPolicy_drop() {
28 $d = new CiviEventDispatcher(\Civi
::container());
29 $d->setDispatchPolicy([
30 '/^hook_civicrm_fakeDr/' => 'drop',
33 $d->addListener('hook_civicrm_fakeDroppable', function() use (&$calls) {
34 $calls['hook_civicrm_fakeDroppable'] = 1;
36 $d->dispatch('hook_civicrm_fakeDroppable', GenericHookEvent
::create([]));
37 $this->assertTrue(!isset($calls['hook_civicrm_fakeDroppable']));
40 public function testDispatchPolicy_fail() {
41 $d = new CiviEventDispatcher(\Civi
::container());
42 $d->setDispatchPolicy([
43 '/^hook_civicrm_fakeFa/' => 'fail',
46 $d->dispatch('hook_civicrm_fakeFailure', GenericHookEvent
::create([]));
47 $this->fail('Expected exception');
49 catch (\Exception
$e) {
50 $this->assertRegExp(';The dispatch policy prohibits event;', $e->getMessage());