Skip to content

Commit 2dc3425

Browse files
authored
Added orphan events assertions (#111)
1 parent 7164b7d commit 2dc3425

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

src/Codeception/Module/Symfony/EventsAssertionsTrait.php

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,33 @@
1313

1414
trait EventsAssertionsTrait
1515
{
16+
/**
17+
* Verifies that one or more orphan events were not dispatched during the test.
18+
*
19+
* An orphan event is an event that is triggered by manually executing the
20+
* [`dispatch()`](https://symfony.com/doc/current/components/event_dispatcher.html#dispatch-the-event) method
21+
* of the EventDispatcher, in other words, it is an event that is not handled by any listener.
22+
*
23+
* ```php
24+
* <?php
25+
* $I->dontSeeOrphanEventTriggered('App\MyEvent');
26+
* $I->dontSeeOrphanEventTriggered(new App\Events\MyEvent());
27+
* $I->dontSeeOrphanEventTriggered(['App\MyEvent', 'App\MyOtherEvent']);
28+
* ```
29+
*
30+
* @param string|object|string[] $expected
31+
*/
32+
public function dontSeeOrphanEventTriggered($expected): void
33+
{
34+
$eventCollector = $this->grabEventCollector(__FUNCTION__);
35+
36+
/** @var Data $data */
37+
$data = $eventCollector->getOrphanedEvents();
38+
$expected = is_array($expected) ? $expected : [$expected];
39+
40+
$this->assertEventNotTriggered($data, $expected);
41+
}
42+
1643
/**
1744
* Verifies that one or more event listeners were not called during the test.
1845
*
@@ -36,6 +63,33 @@ public function dontSeeEventTriggered($expected): void
3663
$this->assertEventNotTriggered($data, $expected);
3764
}
3865

66+
/**
67+
* Verifies that one or more orphan events were dispatched during the test.
68+
*
69+
* An orphan event is an event that is triggered by manually executing the
70+
* [`dispatch()`](https://symfony.com/doc/current/components/event_dispatcher.html#dispatch-the-event) method
71+
* of the EventDispatcher, in other words, it is an event that is not handled by any listener.
72+
*
73+
* ```php
74+
* <?php
75+
* $I->seeOrphanEventTriggered('App\MyEvent');
76+
* $I->seeOrphanEventTriggered(new App\Events\MyEvent());
77+
* $I->seeOrphanEventTriggered(['App\MyEvent', 'App\MyOtherEvent']);
78+
* ```
79+
*
80+
* @param string|object|string[] $expected
81+
*/
82+
public function seeOrphanEventTriggered($expected): void
83+
{
84+
$eventCollector = $this->grabEventCollector(__FUNCTION__);
85+
86+
/** @var Data $data */
87+
$data = $eventCollector->getOrphanedEvents();
88+
$expected = is_array($expected) ? $expected : [$expected];
89+
90+
$this->assertEventTriggered($data, $expected);
91+
}
92+
3993
/**
4094
* Verifies that one or more event listeners were called during the test.
4195
*

0 commit comments

Comments
 (0)