Clean up the bundle's extension

This commit is contained in:
Kamil Kokot
2019-01-21 15:24:49 +01:00
parent 52583ab9d2
commit 3e1da228d0

View File

@@ -18,22 +18,19 @@ final class FriendsOfBehatSymfonyExtensionExtension extends Extension implements
{ {
public function load(array $configs, ContainerBuilder $container): void public function load(array $configs, ContainerBuilder $container): void
{ {
$this->registerBehatContainer($container);
$this->provideMinkIntegration($container); $this->provideMinkIntegration($container);
$this->registerBehatContainer($container);
$container $container->registerForAutoconfiguration(Context::class)->addTag('fob.context');
->registerForAutoconfiguration(Context::class)
->addTag('fob.context')
->setBindings([
'$minkParameters' => new Reference('behat.mink.parameters'),
])
;
} }
public function process(ContainerBuilder $container): void public function process(ContainerBuilder $container): void
{ {
foreach ($container->findTaggedServiceIds('fob.context') as $serviceId => $attributes) { foreach ($container->findTaggedServiceIds('fob.context') as $serviceId => $attributes) {
$container->findDefinition($serviceId)->setPublic(true); $serviceDefinition = $container->findDefinition($serviceId);
$serviceDefinition->setPublic(true);
$serviceDefinition->clearTag('fob.context');
} }
} }
@@ -47,6 +44,18 @@ final class FriendsOfBehatSymfonyExtensionExtension extends Extension implements
} }
private function provideMinkIntegration(ContainerBuilder $container): void private function provideMinkIntegration(ContainerBuilder $container): void
{
$this->registerMinkDefaultSession($container);
$this->registerMinkParameters($container);
$autoconfiguredContextPrototype = $container->registerForAutoconfiguration(Context::class);
$autoconfiguredContextPrototype->setBindings(array_merge(
$autoconfiguredContextPrototype->getBindings(),
['$minkParameters' => new Reference('behat.mink.parameters')]
));
}
private function registerMinkDefaultSession(ContainerBuilder $container): void
{ {
$minkDefaultSessionDefinition = new Definition(Session::class, ['fob_symfony.mink.default_session']); $minkDefaultSessionDefinition = new Definition(Session::class, ['fob_symfony.mink.default_session']);
$minkDefaultSessionDefinition->setPublic(true); $minkDefaultSessionDefinition->setPublic(true);
@@ -55,7 +64,10 @@ final class FriendsOfBehatSymfonyExtensionExtension extends Extension implements
$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');
}
private function registerMinkParameters(ContainerBuilder $container): void
{
$minkParametersDefinition = new Definition(MinkParameters::class, ['fob_symfony.mink.parameters']); $minkParametersDefinition = new Definition(MinkParameters::class, ['fob_symfony.mink.parameters']);
$minkParametersDefinition->setPublic(true); $minkParametersDefinition->setPublic(true);
$minkParametersDefinition->setLazy(true); $minkParametersDefinition->setLazy(true);