Failed Conditions
Push — feature/extension ( 6608eb...80a1d3 )
by Yo
02:13
created

Behat3SymfonyExtension::process()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 0
cts 5
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 3
nc 2
nop 1
crap 6
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\Config\Definition\Builder\TreeBuilder;
8
use Symfony\Component\DependencyInjection\ContainerBuilder;
9
use Yoanm\Behat3SymfonyExtension\ServiceContainer\Driver\Behat3SymfonyDriverFactory;
10
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\AbstractSubExtension;
11
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\HandlerSubExtension;
12
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\InitializerSubExtension;
13
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\KernelSubExtension;
14
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\LoggerSubExtension;
15
use Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension\SubscriberSubExtension;
16
17
class Behat3SymfonyExtension implements Extension
18
{
19
    const BASE_CONTAINER_ID = 'behat3_symfony_extension';
20
    const KERNEL_SERVICE_ID = 'behat3_symfony_extension.kernel';
21
22
    /** @var AbstractSubExtension[] */
23
    private $subExtensionList = array();
24
25
    /**
26
     * {@inheritdoc}
27
     */
28 1
    public function getConfigKey()
29
    {
30 1
        return 'behat3_symfony';
31
    }
32
33
    // @codeCoverageIgnoreStart
34
    // Not possible to cover this because ExtensionManager is a final class
35
    /**
36
     * {@inheritdoc}
37
     */
38
    public function initialize(ExtensionManager $extensionManager)
39
    {
40
        $extensionManager->getExtension('mink')
41
            ->registerDriverFactory(new Behat3SymfonyDriverFactory());
42
43
        $this->subExtensionList[] = new KernelSubExtension();
44
        $this->subExtensionList[] = new LoggerSubExtension();
45
        $this->subExtensionList[] = new HandlerSubExtension();
46
        $this->subExtensionList[] = new InitializerSubExtension();
47
        $this->subExtensionList[] = new SubscriberSubExtension();
48
    }
49
    // @codeCoverageIgnoreEnd
50
51
    /**
52
     * {@inheritdoc}
53
     */
54
    public function configure(ArrayNodeDefinition $builder)
55
    {
56
        $node = $builder
57
            ->addDefaultsIfNotSet()
58
            ->children();
59
        foreach ($this->subExtensionList as $subExtension) {
60
            $configKey = $subExtension->getConfigKey();
61
            if (is_string($configKey)) {
62
                $tree = new TreeBuilder();
63
                $subBuilder = $tree->root($configKey);
64
                $subExtension->configure($subBuilder);
65
                $node->append($subBuilder);
66
            }
67
        }
68
69
        $node->end();
70
    }
71
72
    /**
73
     * {@inheritdoc}
74
     */
75
    public function load(ContainerBuilder $container, array $config)
76
    {
77
        foreach ($this->subExtensionList as $subExtension) {
78
            $subExtension->load($container, $config);
79
        }
80
    }
81
82
    /**
83
     * {@inheritdoc}
84
     */
85
    public function process(ContainerBuilder $container)
86
    {
87
        foreach ($this->subExtensionList as $subExtension) {
88
            $subExtension->process($container);
89
        }
90
    }
91
}
92