Test Failed
Push — feature/improve ( 3cba19 )
by Yo
03:30
created

Behat3SymfonyExtension::load()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
ccs 8
cts 8
cp 1
cc 2
eloc 9
nc 2
nop 2
crap 2
1
<?php
2
namespace Yoanm\Behat3SymfonyExtension\ServiceContainer;
3
4
use Behat\Testwork\ServiceContainer\Extension;
5
use Behat\Testwork\ServiceContainer\ExtensionManager;
6
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Reference;
9
use Yoanm\Behat3SymfonyExtension\Context\Initializer\BehatContextSubscriberInitializer;
10
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\KernelSubExtension;
11
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\LoggerSubExtension;
12
13
class Behat3SymfonyExtension extends AbstractExtension
14
{
15
    /** @var Extension[] */
16
    private $subExtensionList = [];
17
18
    public function __construct(Extension $kernelSubExtension = null, Extension $loggerSubExtension = null)
19
    {
20
        $this->subExtensionList[] = $kernelSubExtension ?: new KernelSubExtension();
21
        $this->subExtensionList[] = $loggerSubExtension ?: new LoggerSubExtension();
22 5
    }
23
24 5
    /**
25 5
     * {@inheritdoc}
26 5
     */
27
    public function getConfigKey()
28
    {
29
        return 'behat3_symfony';
30
    }
31 1
32
    // @codeCoverageIgnoreStart
33 1
    // Not possible to cover this because ExtensionManager is a final class
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function initialize(ExtensionManager $extensionManager)
38
    {
39
        foreach ($this->subExtensionList as $subExtension) {
40
            $subExtension->initialize($extensionManager);
41
        }
42
    }
43
    // @codeCoverageIgnoreEnd
44
45
    /**
46
     * {@inheritdoc}
47
     */
48
    public function configure(ArrayNodeDefinition $builder)
49
    {
50
        foreach ($this->subExtensionList as $subExtension) {
51
            $subExtension->configure(
52 1
                $builder->children()
53
                    ->arrayNode($subExtension->getConfigKey())
54 1
            );
55 1
        }
56 1
    }
57 1
58 1
    /**
59 1
     * {@inheritdoc}
60 1
     */
61
    public function load(ContainerBuilder $container, array $config)
62
    {
63
        foreach ($this->subExtensionList as $subExtension) {
64
            $subExtension->load($container, $config);
65 2
        }
66
        $this->createService(
67 2
            $container,
68 2
            'initializer.behat_subscriber',
69 2
            BehatContextSubscriberInitializer::class,
70 2
            [new Reference('event_dispatcher')],
71 2
            ['context.initializer']
72 2
        );
73 2
    }
74
75 2
    /**
76 2
     * {@inheritdoc}
77
     */
78 2
    public function process(ContainerBuilder $container)
79 2
    {
80 2
        foreach ($this->subExtensionList as $subExtension) {
81 2
            $subExtension->process($container);
82 2
        }
83 2
    }
84
}
85