From 5e802fe665ff5f5928acda6ad9ee02d8f2ff068e Mon Sep 17 00:00:00 2001 From: Mykhailo Sverdlykivskyi Date: Tue, 12 Dec 2023 00:43:25 +0200 Subject: [PATCH 1/5] Update seeOrphanEvent test, add tests for seeEvent/dontSeeEvent --- src/Controller/RegistrationController.php | 14 +++++++++-- src/Event/UserRegisteredEvent.php | 7 ++++++ tests/Functional/EventsCest.php | 30 ++++++++++++++++++++--- 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 src/Event/UserRegisteredEvent.php diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php index a552c93..a0b3264 100644 --- a/src/Controller/RegistrationController.php +++ b/src/Controller/RegistrationController.php @@ -5,9 +5,11 @@ namespace App\Controller; use App\Entity\User; +use App\Event\UserRegisteredEvent; use App\Form\RegistrationFormType; use App\Repository\Model\UserRepositoryInterface; use App\Utils\Mailer; +use Psr\EventDispatcher\EventDispatcherInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -18,10 +20,16 @@ final class RegistrationController extends AbstractController private UserRepositoryInterface $userRepository; - public function __construct(Mailer $mailer, UserRepositoryInterface $userRepository) - { + private EventDispatcherInterface $eventDispatcher; + + public function __construct( + Mailer $mailer, + UserRepositoryInterface $userRepository, + EventDispatcherInterface $eventDispatcher + ) { $this->mailer = $mailer; $this->userRepository = $userRepository; + $this->eventDispatcher = $eventDispatcher; } public function __invoke(Request $request): Response @@ -38,6 +46,8 @@ public function __invoke(Request $request): Response $this->mailer->sendConfirmationEmail($user); + $this->eventDispatcher->dispatch(new UserRegisteredEvent()); + return $this->redirectToRoute('app_login'); } diff --git a/src/Event/UserRegisteredEvent.php b/src/Event/UserRegisteredEvent.php new file mode 100644 index 0000000..e968232 --- /dev/null +++ b/src/Event/UserRegisteredEvent.php @@ -0,0 +1,7 @@ + '123456', '_remember_me' => false ]); - $I->dontseeOrphanEvent(); + $I->dontSeeOrphanEvent(); + } + + public function dontSeeEvent(FunctionalTester $I) + { + $I->amOnPage('/'); + $I->dontSeeEvent(KernelEvents::EXCEPTION); + $I->dontSeeEvent([new UserRegisteredEvent(), ConsoleEvents::COMMAND]); } public function seeEventTriggered(FunctionalTester $I) @@ -56,13 +67,26 @@ public function seeEventListenerIsCalled(FunctionalTester $I) public function seeOrphanEvent(FunctionalTester $I) { - $I->markTestIncomplete('To do: use a new event for this assertion'); $I->amOnPage('/register'); + $I->stopFollowingRedirects(); + $I->submitSymfonyForm('registration_form', [ + '[email]' => 'jane_doe@gmail.com', + '[plainPassword]' => '123456', + '[agreeTerms]' => true + ]); + $I->seeOrphanEvent(UserRegisteredEvent::class); + } + + public function seeEvent(FunctionalTester $I) + { + $I->amOnPage('/register'); + $I->stopFollowingRedirects(); $I->submitSymfonyForm('registration_form', [ '[email]' => 'jane_doe@gmail.com', '[plainPassword]' => '123456', '[agreeTerms]' => true ]); - $I->seeOrphanEvent('security.authentication.success'); + $I->seeEvent(UserRegisteredEvent::class); + $I->seeEvent(KernelEvents::REQUEST, KernelEvents::FINISH_REQUEST); } } From d51bd6bd86e28b1751e3d312ae9dd21f032dd786 Mon Sep 17 00:00:00 2001 From: Mykhailo Sverdlykivskyi Date: Tue, 12 Dec 2023 00:43:49 +0200 Subject: [PATCH 2/5] Add tests for seeEventTriggered/dontSeeEventTriggered to check event filtering --- tests/Functional/EventsCest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/Functional/EventsCest.php b/tests/Functional/EventsCest.php index 600b86c..eeb91d9 100644 --- a/tests/Functional/EventsCest.php +++ b/tests/Functional/EventsCest.php @@ -15,6 +15,9 @@ final class EventsCest { + /** + * @deprecated in favor of dontSeeEventListenerIsCalled + */ public function dontSeeEventTriggered(FunctionalTester $I) { $I->amOnPage('/'); @@ -29,6 +32,9 @@ public function dontSeeEventListenerIsCalled(FunctionalTester $I) $I->dontSeeEventListenerIsCalled(ErrorListener::class); $I->dontSeeEventListenerIsCalled(new ErrorListener()); $I->dontSeeEventListenerIsCalled([ErrorListener::class, ErrorListener::class]); + // with events + $I->dontSeeEventListenerIsCalled(SecurityListener::class, KernelEvents::EXCEPTION); + $I->dontSeeEventListenerIsCalled(SecurityListener::class, [KernelEvents::REQUEST, KernelEvents::EXCEPTION]); } public function dontSeeOrphanEvent(FunctionalTester $I) @@ -49,6 +55,9 @@ public function dontSeeEvent(FunctionalTester $I) $I->dontSeeEvent([new UserRegisteredEvent(), ConsoleEvents::COMMAND]); } + /** + * @deprecated in favor of seeEventListenerIsCalled + */ public function seeEventTriggered(FunctionalTester $I) { $I->amOnPage('/'); @@ -63,6 +72,9 @@ public function seeEventListenerIsCalled(FunctionalTester $I) $I->seeEventListenerIsCalled(SecurityListener::class); $I->seeEventListenerIsCalled(new RouterDataCollector()); $I->seeEventListenerIsCalled([SecurityListener::class, RouterDataCollector::class]); + // with events + $I->seeEventListenerIsCalled(SecurityListener::class, KernelEvents::CONTROLLER_ARGUMENTS); + $I->seeEventListenerIsCalled(LocaleListener::class, [KernelEvents::REQUEST, KernelEvents::FINISH_REQUEST]); } public function seeOrphanEvent(FunctionalTester $I) From 64af0bfaaab77aa34cc1620df6422ce5f5cc74fb Mon Sep 17 00:00:00 2001 From: TavoNiievez Date: Sat, 16 Dec 2023 16:03:16 -0500 Subject: [PATCH 3/5] mark as skipped method tests not yet added --- tests/Functional/EventsCest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Functional/EventsCest.php b/tests/Functional/EventsCest.php index eeb91d9..b56e5be 100644 --- a/tests/Functional/EventsCest.php +++ b/tests/Functional/EventsCest.php @@ -50,6 +50,7 @@ public function dontSeeOrphanEvent(FunctionalTester $I) public function dontSeeEvent(FunctionalTester $I) { + $I->markTestSkipped(); $I->amOnPage('/'); $I->dontSeeEvent(KernelEvents::EXCEPTION); $I->dontSeeEvent([new UserRegisteredEvent(), ConsoleEvents::COMMAND]); @@ -91,6 +92,7 @@ public function seeOrphanEvent(FunctionalTester $I) public function seeEvent(FunctionalTester $I) { + $I->markTestSkipped(); $I->amOnPage('/register'); $I->stopFollowingRedirects(); $I->submitSymfonyForm('registration_form', [ From 9680ed2e52d5ce3af60416385d8b04a9754c5528 Mon Sep 17 00:00:00 2001 From: Mykhailo Sverdlykivskyi Date: Mon, 18 Dec 2023 16:37:37 +0200 Subject: [PATCH 4/5] Remove sensio/framework-extra-bundle usage --- tests/Functional/EventsCest.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/Functional/EventsCest.php b/tests/Functional/EventsCest.php index b56e5be..8c09b6f 100644 --- a/tests/Functional/EventsCest.php +++ b/tests/Functional/EventsCest.php @@ -6,11 +6,11 @@ use App\Event\UserRegisteredEvent; use App\Tests\FunctionalTester; -use Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener; use Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector; use Symfony\Component\Console\ConsoleEvents; use Symfony\Component\Console\EventListener\ErrorListener; use Symfony\Component\HttpKernel\EventListener\LocaleListener; +use Symfony\Component\HttpKernel\EventListener\RouterListener; use Symfony\Component\HttpKernel\KernelEvents; final class EventsCest @@ -33,8 +33,8 @@ public function dontSeeEventListenerIsCalled(FunctionalTester $I) $I->dontSeeEventListenerIsCalled(new ErrorListener()); $I->dontSeeEventListenerIsCalled([ErrorListener::class, ErrorListener::class]); // with events - $I->dontSeeEventListenerIsCalled(SecurityListener::class, KernelEvents::EXCEPTION); - $I->dontSeeEventListenerIsCalled(SecurityListener::class, [KernelEvents::REQUEST, KernelEvents::EXCEPTION]); + $I->dontSeeEventListenerIsCalled(RouterListener::class, KernelEvents::EXCEPTION); + $I->dontSeeEventListenerIsCalled(RouterListener::class, [KernelEvents::RESPONSE, KernelEvents::EXCEPTION]); } public function dontSeeOrphanEvent(FunctionalTester $I) @@ -62,19 +62,19 @@ public function dontSeeEvent(FunctionalTester $I) public function seeEventTriggered(FunctionalTester $I) { $I->amOnPage('/'); - $I->seeEventTriggered(SecurityListener::class); + $I->seeEventTriggered(RouterListener::class); $I->seeEventTriggered(new RouterDataCollector()); - $I->seeEventTriggered([SecurityListener::class, RouterDataCollector::class]); + $I->seeEventTriggered([RouterListener::class, RouterDataCollector::class]); } public function seeEventListenerIsCalled(FunctionalTester $I) { $I->amOnPage('/'); - $I->seeEventListenerIsCalled(SecurityListener::class); + $I->seeEventListenerIsCalled(RouterListener::class); $I->seeEventListenerIsCalled(new RouterDataCollector()); - $I->seeEventListenerIsCalled([SecurityListener::class, RouterDataCollector::class]); + $I->seeEventListenerIsCalled([RouterListener::class, RouterDataCollector::class]); // with events - $I->seeEventListenerIsCalled(SecurityListener::class, KernelEvents::CONTROLLER_ARGUMENTS); + $I->seeEventListenerIsCalled(RouterListener::class, KernelEvents::REQUEST); $I->seeEventListenerIsCalled(LocaleListener::class, [KernelEvents::REQUEST, KernelEvents::FINISH_REQUEST]); } From 707e271ab2b3e1d82e3890221dd0cc854f2d572e Mon Sep 17 00:00:00 2001 From: Mykhailo Sverdlykivskyi Date: Mon, 18 Dec 2023 18:09:11 +0200 Subject: [PATCH 5/5] Update codeception/module-symfony dependency --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index e55ef8c..4402f34 100644 --- a/composer.lock +++ b/composer.lock @@ -5933,12 +5933,12 @@ "source": { "type": "git", "url": "https://github.com/Codeception/module-symfony.git", - "reference": "cb1334090161aecc94bdb78c7ea3a52417cd728b" + "reference": "19c86fc1041fc29b151ec9a783426089731dbae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-symfony/zipball/cb1334090161aecc94bdb78c7ea3a52417cd728b", - "reference": "cb1334090161aecc94bdb78c7ea3a52417cd728b", + "url": "https://api.github.com/repos/Codeception/module-symfony/zipball/19c86fc1041fc29b151ec9a783426089731dbae7", + "reference": "19c86fc1041fc29b151ec9a783426089731dbae7", "shasum": "" }, "require": { @@ -5994,7 +5994,7 @@ "issues": "https://github.com/Codeception/module-symfony/issues", "source": "https://github.com/Codeception/module-symfony/tree/main" }, - "time": "2023-10-23T18:28:50+00:00" + "time": "2023-12-11T21:10:21+00:00" }, { "name": "codeception/stub",