Commit | Line | Data |
---|---|---|
926d7afc TO |
1 | <?php |
2 | ||
3 | namespace Civi\Core; | |
4 | ||
5 | use Civi\Core\Event\GenericHookEvent; | |
6 | ||
7 | /** | |
8 | * Class CiviEventDispatcherTest | |
9 | * @package Civi\Core | |
10 | * @group headless | |
11 | */ | |
12 | class CiviEventDispatcherTest extends \CiviUnitTestCase { | |
13 | ||
14 | public function testDispatchPolicy_run() { | |
15 | $d = new CiviEventDispatcher(\Civi::container()); | |
16 | $d->setDispatchPolicy([ | |
17 | 'hook_civicrm_fakeRunnable' => 'run', | |
18 | ]); | |
19 | $calls = []; | |
20 | $d->addListener('hook_civicrm_fakeRunnable', function() use (&$calls) { | |
21 | $calls['hook_civicrm_fakeRunnable'] = 1; | |
22 | }); | |
23 | $d->dispatch('hook_civicrm_fakeRunnable', new GenericHookEvent()); | |
24 | $this->assertEquals(1, $calls['hook_civicrm_fakeRunnable']); | |
25 | } | |
26 | ||
27 | public function testDispatchPolicy_drop() { | |
28 | $d = new CiviEventDispatcher(\Civi::container()); | |
29 | $d->setDispatchPolicy([ | |
30 | '/^hook_civicrm_fakeDr/' => 'drop', | |
31 | ]); | |
32 | $calls = []; | |
33 | $d->addListener('hook_civicrm_fakeDroppable', function() use (&$calls) { | |
34 | $calls['hook_civicrm_fakeDroppable'] = 1; | |
35 | }); | |
36 | $d->dispatch('hook_civicrm_fakeDroppable', new GenericHookEvent()); | |
37 | $this->assertTrue(!isset($calls['hook_civicrm_fakeDroppable'])); | |
38 | } | |
39 | ||
40 | public function testDispatchPolicy_fail() { | |
41 | $d = new CiviEventDispatcher(\Civi::container()); | |
42 | $d->setDispatchPolicy([ | |
43 | '/^hook_civicrm_fakeFa/' => 'fail', | |
44 | ]); | |
45 | try { | |
46 | $d->dispatch('hook_civicrm_fakeFailure', new GenericHookEvent()); | |
47 | $this->fail('Expected exception'); | |
48 | } | |
49 | catch (\Exception $e) { | |
50 | $this->assertRegExp(';The dispatch policy prohibits event;', $e->getMessage()); | |
51 | } | |
52 | } | |
53 | ||
54 | } |