Skip to content

Commit 33aa68c

Browse files
authored
Added seeEventTriggered function (#68)
1 parent 5f181e6 commit 33aa68c

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/Codeception/Module/Symfony.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,6 +1133,43 @@ public function grabParameter(string $name)
11331133
return $parameterBag->get($name);
11341134
}
11351135

1136+
/**
1137+
* Make sure events fired during the test.
1138+
*
1139+
* ``` php
1140+
* <?php
1141+
* $I->seeEventTriggered('App\MyEvent');
1142+
* $I->seeEventTriggered(new App\Events\MyEvent());
1143+
* $I->seeEventTriggered(['App\MyEvent', 'App\MyOtherEvent']);
1144+
* ```
1145+
* @param string|object|string[] $expected
1146+
*/
1147+
public function seeEventTriggered($expected)
1148+
{
1149+
$eventCollector = $this->grabCollector('events', __FUNCTION__);
1150+
1151+
$data = $eventCollector->getCalledListeners();
1152+
1153+
if ($data->count() === 0) {
1154+
$this->fail('No event was triggered');
1155+
}
1156+
1157+
$actual = $data->getValue(true);
1158+
$expected = is_array($expected) ? $expected : [$expected];
1159+
1160+
foreach ($expected as $expectedEvent) {
1161+
$triggered = false;
1162+
$expectedEvent = is_object($expectedEvent) ? get_class($expectedEvent) : $expectedEvent;
1163+
1164+
foreach ($actual as $actualEvent) {
1165+
if (strpos($actualEvent['pretty'], $expectedEvent) === 0) {
1166+
$triggered = true;
1167+
}
1168+
}
1169+
$this->assertTrue($triggered, "The '$expectedEvent' event did not trigger");
1170+
}
1171+
}
1172+
11361173
/**
11371174
* Checks that current page matches action
11381175
*

0 commit comments

Comments
 (0)