Passed
Push — feature/extension ( 80a1d3...dba08b )
by Yo
02:20
created

Behat3SymfonyExtension::getConfigKey()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
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 4
    public function __construct()
26
    {
27 4
        $this->subExtensionList[] = new KernelSubExtension();
28 4
        $this->subExtensionList[] = new LoggerSubExtension();
29 4
        $this->subExtensionList[] = new HandlerSubExtension();
30 4
        $this->subExtensionList[] = new InitializerSubExtension();
31 4
        $this->subExtensionList[] = new SubscriberSubExtension();
32 4
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37 1
    public function getConfigKey()
38
    {
39 1
        return 'behat3_symfony';
40
    }
41
42
    // @codeCoverageIgnoreStart
43
    // Not possible to cover this because ExtensionManager is a final class
44
    /**
45
     * {@inheritdoc}
46
     */
47
    public function initialize(ExtensionManager $extensionManager)
48
    {
49
        $extensionManager->getExtension('mink')
50
            ->registerDriverFactory(new Behat3SymfonyDriverFactory());
51
    }
52
    // @codeCoverageIgnoreEnd
53
54
    /**
55
     * {@inheritdoc}
56
     */
57 1
    public function configure(ArrayNodeDefinition $builder)
58
    {
59
        $node = $builder
60 1
            ->addDefaultsIfNotSet()
61 1
            ->children();
62 1
        foreach ($this->subExtensionList as $subExtension) {
63 1
            $configKey = $subExtension->getConfigKey();
64 1
            if (is_string($configKey)) {
65 1
                $tree = new TreeBuilder();
66 1
                $subBuilder = $tree->root($configKey);
67 1
                $subExtension->configure($subBuilder);
68 1
                $node->append($subBuilder);
69 1
            }
70 1
        }
71
72 1
        $node->end();
73 1
    }
74
75
    /**
76
     * {@inheritdoc}
77
     */
78 1
    public function load(ContainerBuilder $container, array $config)
79 1
    {
80 1
        foreach ($this->subExtensionList as $subExtension) {
81 1
            $subExtension->load($container, $config);
82 1
        }
83 1
    }
84
85
    /**
86
     * {@inheritdoc}
87
     */
88 1
    public function process(ContainerBuilder $container)
89
    {
90 1
        foreach ($this->subExtensionList as $subExtension) {
91 1
            $subExtension->process($container);
92 1
        }
93 1
    }
94
}
95