Completed
Push — master ( e5e74e...13adb5 )
by Yo
02:16
created

Behat3SymfonyExtension::load()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 12
cts 12
cp 1
rs 9.4285
c 0
b 0
f 0
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 5
    public function __construct(Extension $kernelSubExtension = null, Extension $loggerSubExtension = null)
19
    {
20 5
        $this->subExtensionList[] = $kernelSubExtension ?: new KernelSubExtension();
21 5
        $this->subExtensionList[] = $loggerSubExtension ?: new LoggerSubExtension();
22 5
    }
23
24
    /**
25
     * {@inheritdoc}
26
     */
27 1
    public function getConfigKey()
28
    {
29 1
        return 'behat3_symfony';
30
    }
31
32
    // @codeCoverageIgnoreStart
33
    // 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 1
    public function configure(ArrayNodeDefinition $builder)
49
    {
50 1
        foreach ($this->subExtensionList as $subExtension) {
51 1
            $subExtension->configure(
52 1
                $builder->children()
53 1
                    ->arrayNode($subExtension->getConfigKey())
54 1
            );
55 1
        }
56 1
    }
57
58
    /**
59
     * {@inheritdoc}
60
     */
61 2
    public function load(ContainerBuilder $container, array $config)
62
    {
63 2
        foreach ($this->subExtensionList as $subExtension) {
64 2
            $subExtension->load($container, $config);
65 2
        }
66 2
        $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
    /**
76
     * {@inheritdoc}
77
     */
78 1
    public function process(ContainerBuilder $container)
79
    {
80 1
        foreach ($this->subExtensionList as $subExtension) {
81 1
            $subExtension->process($container);
82 1
        }
83 1
    }
84
}
85