From e7a342fb7b3bb4f3888bb044b069f431ce8b7f70 Mon Sep 17 00:00:00 2001 From: Tavo Nieves J Date: Tue, 8 Dec 2020 20:44:17 -0500 Subject: [PATCH] Added seeEventTriggered function --- src/Codeception/Module/Symfony.php | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/Codeception/Module/Symfony.php b/src/Codeception/Module/Symfony.php index 3c6a0b97..e3cfdbb3 100644 --- a/src/Codeception/Module/Symfony.php +++ b/src/Codeception/Module/Symfony.php @@ -1078,6 +1078,43 @@ public function grabParameter(string $name) return $parameterBag->get($name); } + /** + * Make sure events fired during the test. + * + * ``` php + * seeEventTriggered('App\MyEvent'); + * $I->seeEventTriggered(new App\Events\MyEvent()); + * $I->seeEventTriggered(['App\MyEvent', 'App\MyOtherEvent']); + * ``` + * @param string|object|string[] $expected + */ + public function seeEventTriggered($expected) + { + $eventCollector = $this->grabCollector('events', __FUNCTION__); + + $data = $eventCollector->getCalledListeners(); + + if ($data->count() === 0) { + $this->fail('No event was triggered'); + } + + $actual = $data->getValue(true); + $expected = is_array($expected) ? $expected : [$expected]; + + foreach ($expected as $expectedEvent) { + $triggered = false; + $expectedEvent = is_object($expectedEvent) ? get_class($expectedEvent) : $expectedEvent; + + foreach ($actual as $actualEvent) { + if (strpos($actualEvent['pretty'], $expectedEvent) === 0) { + $triggered = true; + } + } + $this->assertTrue($triggered, "The '$expectedEvent' event did not trigger"); + } + } + /** * Checks that current page matches action *