Make SymfonyExtension great again
This commit is contained in:
@@ -46,21 +46,15 @@ final class FriendsOfBehatSymfonyExtensionExtension extends Extension implements
|
|||||||
|
|
||||||
private function provideMinkIntegration(ContainerBuilder $container): void
|
private function provideMinkIntegration(ContainerBuilder $container): void
|
||||||
{
|
{
|
||||||
$minkDefinition = new Definition(Mink::class, ['mink']);
|
$minkDefaultSessionDefinition = new Definition(Session::class, ['fob_symfony_extension.mink_default_session']);
|
||||||
$minkDefinition->setPublic(true);
|
|
||||||
$minkDefinition->setFactory([new Reference('behat.service_container'), 'get']);
|
|
||||||
|
|
||||||
$container->setDefinition('behat.mink', $minkDefinition);
|
|
||||||
|
|
||||||
$minkDefaultSessionDefinition = new Definition(Session::class);
|
|
||||||
$minkDefaultSessionDefinition->setPublic(true);
|
$minkDefaultSessionDefinition->setPublic(true);
|
||||||
$minkDefaultSessionDefinition->setLazy(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->setDefinition('behat.mink.default_session', $minkDefaultSessionDefinition);
|
||||||
$container->setAlias(Session::class, 'behat.mink.default_session');
|
$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->setPublic(true);
|
||||||
$minkParametersDefinition->setLazy(true);
|
$minkParametersDefinition->setLazy(true);
|
||||||
$minkParametersDefinition->setFactory([new Reference('behat.service_container'), 'get']);
|
$minkParametersDefinition->setFactory([new Reference('behat.service_container'), 'get']);
|
||||||
|
|||||||
@@ -27,22 +27,21 @@ final class KernelRebooter implements EventSubscriberInterface
|
|||||||
public static function getSubscribedEvents(): array
|
public static function getSubscribedEvents(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
ScenarioTested::AFTER => ['rebootSymfonyKernel', -15],
|
ScenarioTested::BEFORE => ['setUp', 15],
|
||||||
ExampleTested::AFTER => ['rebootSymfonyKernel', -15],
|
ExampleTested::BEFORE => ['setUp', 15],
|
||||||
ScenarioTested::BEFORE => ['transferBehatContainer', 15],
|
ScenarioTested::AFTER => ['tearDown', -15],
|
||||||
ExampleTested::BEFORE => ['transferBehatContainer', 15],
|
ExampleTested::AFTER => ['tearDown', -15],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function transferBehatContainer(): void
|
public function setUp(): void
|
||||||
{
|
{
|
||||||
$symfonyContainer = $this->symfonyKernel->getContainer();
|
$this->symfonyKernel->getContainer()->set('behat.service_container', $this->behatContainer);
|
||||||
|
|
||||||
$symfonyContainer->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->shutdown();
|
||||||
$this->symfonyKernel->boot();
|
$this->symfonyKernel->boot();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ declare(strict_types=1);
|
|||||||
namespace FriendsOfBehat\SymfonyExtension\ServiceContainer;
|
namespace FriendsOfBehat\SymfonyExtension\ServiceContainer;
|
||||||
|
|
||||||
use Behat\Behat\Context\ServiceContainer\ContextExtension;
|
use Behat\Behat\Context\ServiceContainer\ContextExtension;
|
||||||
|
use Behat\Mink\Mink;
|
||||||
|
use Behat\Mink\Session;
|
||||||
use Behat\MinkExtension\ServiceContainer\MinkExtension;
|
use Behat\MinkExtension\ServiceContainer\MinkExtension;
|
||||||
use Behat\Testwork\Environment\ServiceContainer\EnvironmentExtension;
|
use Behat\Testwork\Environment\ServiceContainer\EnvironmentExtension;
|
||||||
use Behat\Testwork\EventDispatcher\ServiceContainer\EventDispatcherExtension;
|
use Behat\Testwork\EventDispatcher\ServiceContainer\EventDispatcherExtension;
|
||||||
@@ -85,10 +87,16 @@ final class SymfonyExtension implements Extension
|
|||||||
|
|
||||||
$this->loadKernelRebooter($container);
|
$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 = new Definition(MinkParameters::class, [new Parameter('mink.parameters')]);
|
||||||
$minkParametersDefinition->setPublic(true);
|
$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
|
public function process(ContainerBuilder $container): void
|
||||||
|
|||||||
Reference in New Issue
Block a user