From f334860d5c64ee3243f413fae2856cf22a0e8227 Mon Sep 17 00:00:00 2001 From: Kamil Kokot Date: Fri, 28 Dec 2018 19:55:49 +0100 Subject: [PATCH] Make SymfonyExtension great again --- .../FriendsOfBehatSymfonyExtensionExtension.php | 12 +++--------- src/Listener/KernelRebooter.php | 17 ++++++++--------- src/ServiceContainer/SymfonyExtension.php | 10 +++++++++- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/Bundle/DependencyInjection/FriendsOfBehatSymfonyExtensionExtension.php b/src/Bundle/DependencyInjection/FriendsOfBehatSymfonyExtensionExtension.php index b3632d5..a554911 100644 --- a/src/Bundle/DependencyInjection/FriendsOfBehatSymfonyExtensionExtension.php +++ b/src/Bundle/DependencyInjection/FriendsOfBehatSymfonyExtensionExtension.php @@ -46,21 +46,15 @@ final class FriendsOfBehatSymfonyExtensionExtension extends Extension implements private function provideMinkIntegration(ContainerBuilder $container): void { - $minkDefinition = new Definition(Mink::class, ['mink']); - $minkDefinition->setPublic(true); - $minkDefinition->setFactory([new Reference('behat.service_container'), 'get']); - - $container->setDefinition('behat.mink', $minkDefinition); - - $minkDefaultSessionDefinition = new Definition(Session::class); + $minkDefaultSessionDefinition = new Definition(Session::class, ['fob_symfony_extension.mink_default_session']); $minkDefaultSessionDefinition->setPublic(true); $minkDefaultSessionDefinition->setLazy(true); - $minkDefaultSessionDefinition->setFactory([new Reference('behat.mink'), 'getSession']); + $minkDefaultSessionDefinition->setFactory([new Reference('behat.service_container'), 'get']); $container->setDefinition('behat.mink.default_session', $minkDefaultSessionDefinition); $container->setAlias(Session::class, 'behat.mink.default_session'); - $minkParametersDefinition = new Definition(MinkParameters::class, ['sylius_symfony_extension.mink_parameters']); + $minkParametersDefinition = new Definition(MinkParameters::class, ['fob_symfony_extension.mink_parameters']); $minkParametersDefinition->setPublic(true); $minkParametersDefinition->setLazy(true); $minkParametersDefinition->setFactory([new Reference('behat.service_container'), 'get']); diff --git a/src/Listener/KernelRebooter.php b/src/Listener/KernelRebooter.php index 69f105a..8eb7a57 100644 --- a/src/Listener/KernelRebooter.php +++ b/src/Listener/KernelRebooter.php @@ -27,22 +27,21 @@ final class KernelRebooter implements EventSubscriberInterface public static function getSubscribedEvents(): array { return [ - ScenarioTested::AFTER => ['rebootSymfonyKernel', -15], - ExampleTested::AFTER => ['rebootSymfonyKernel', -15], - ScenarioTested::BEFORE => ['transferBehatContainer', 15], - ExampleTested::BEFORE => ['transferBehatContainer', 15], + ScenarioTested::BEFORE => ['setUp', 15], + ExampleTested::BEFORE => ['setUp', 15], + ScenarioTested::AFTER => ['tearDown', -15], + ExampleTested::AFTER => ['tearDown', -15], ]; } - public function transferBehatContainer(): void + public function setUp(): void { - $symfonyContainer = $this->symfonyKernel->getContainer(); - - $symfonyContainer->set('behat.service_container', $this->behatContainer); + $this->symfonyKernel->getContainer()->set('behat.service_container', $this->behatContainer); } - public function rebootSymfonyKernel(): void + public function tearDown(): void { + $this->symfonyKernel->getContainer()->set('behat.service_container', null); $this->symfonyKernel->shutdown(); $this->symfonyKernel->boot(); } diff --git a/src/ServiceContainer/SymfonyExtension.php b/src/ServiceContainer/SymfonyExtension.php index db64200..4b8c750 100644 --- a/src/ServiceContainer/SymfonyExtension.php +++ b/src/ServiceContainer/SymfonyExtension.php @@ -5,6 +5,8 @@ declare(strict_types=1); namespace FriendsOfBehat\SymfonyExtension\ServiceContainer; use Behat\Behat\Context\ServiceContainer\ContextExtension; +use Behat\Mink\Mink; +use Behat\Mink\Session; use Behat\MinkExtension\ServiceContainer\MinkExtension; use Behat\Testwork\Environment\ServiceContainer\EnvironmentExtension; use Behat\Testwork\EventDispatcher\ServiceContainer\EventDispatcherExtension; @@ -85,10 +87,16 @@ final class SymfonyExtension implements Extension $this->loadKernelRebooter($container); + $minkDefaultSessionDefinition = new Definition(Session::class); + $minkDefaultSessionDefinition->setPublic(true); + $minkDefaultSessionDefinition->setFactory([new Reference('mink'), 'getSession']); + + $container->setDefinition('fob_symfony_extension.mink_default_session', $minkDefaultSessionDefinition); + $minkParametersDefinition = new Definition(MinkParameters::class, [new Parameter('mink.parameters')]); $minkParametersDefinition->setPublic(true); - $container->setDefinition('sylius_symfony_extension.mink_parameters', $minkParametersDefinition); + $container->setDefinition('fob_symfony_extension.mink_parameters', $minkParametersDefinition); } public function process(ContainerBuilder $container): void