Completed
Push — master ( 17fc80...f1e694 )
by Yo
02:15
created

LoggerSubExtension::load()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 52
Code Lines 33

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 43
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 52
ccs 43
cts 43
cp 1
rs 9.4929
c 0
b 0
f 0
cc 2
eloc 33
nc 2
nop 2
crap 2

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
namespace Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension;
3
4
use Behat\Testwork\ServiceContainer\ExtensionManager;
5
use Monolog\Handler\StreamHandler;
6
use Monolog\Logger;
7
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
8
use Symfony\Component\DependencyInjection\ContainerBuilder;
9
use Symfony\Component\DependencyInjection\Reference;
10
use Yoanm\Behat3SymfonyExtension\Logger\SfKernelEventLogger;
11
use Yoanm\Behat3SymfonyExtension\ServiceContainer\AbstractExtension;
12
use Yoanm\Behat3SymfonyExtension\Subscriber\SfKernelLoggerSubscriber;
13
14
class LoggerSubExtension extends AbstractExtension
15
{
16
    /**
17
     * @inheritDoc
18
     */
19 3
    public function getConfigKey()
20
    {
21 3
        return 'logger';
22
    }
23
24
    // @codeCoverageIgnoreStart
25
    // Not possible to cover this because ExtensionManager is a final class
26
    /**
27
     * {@inheritdoc}
28
     */
29
    public function initialize(ExtensionManager $extensionManager)
30
    {
31
    }
32
    // @codeCoverageIgnoreEnd
33
34
    // @codeCoverageIgnoreStart
35
    // Will be covered by FT
36
    /**
37
     * @inheritDoc
38
     */
39
    public function configure(ArrayNodeDefinition $builder)
40
    {
41
        $builder
42
            ->addDefaultsIfNotSet()
43
            ->children()
44
                ->scalarNode('path')
45
                    ->defaultValue('var/log/behat.log')
46
                ->end()
47
                ->scalarNode('level')
48
                    ->beforeNormalization()
49
                    ->always()
50
                    ->then(function ($value) {
51
                        return Logger::toMonologLevel($value);
52
                    })
53
                    ->end()
54
                    ->defaultValue(Logger::DEBUG)
55
                ->end()
56
            ->end()
57
        ->end();
58
    }
59
    // @codeCoverageIgnoreEnd
60
61
    /**
62
     * {@inheritdoc}
63
     */
64 2
    public function load(ContainerBuilder $container, array $config)
65
    {
66 2
        $loggerConfig = $config[$this->getConfigKey()];
67 2
        $baseHandlerServiceId = 'logger.handler';
68
        // Handler
69 2
        $this->createService(
70 2
            $container,
71 2
            $baseHandlerServiceId,
72 2
            StreamHandler::class,
73
            [
74 2
                sprintf(
75 2
                    '%s/%s',
76 2
                    '%behat.paths.base%',
77 2
                    $loggerConfig['path']
78 2
                ),
79 2
                $loggerConfig['level'],
80
            ]
81 2
        );
82
        // Logger
83 2
        $this->createService(
84 2
            $container,
85 2
            'logger',
86 2
            Logger::class,
87
            [
88 2
                'behat3Symfony',
89 2
                $loggerConfig['level'],
90 2
            ],
91 2
            ['event_dispatcher.subscriber'],
92
            [
93
                [
94 2
                    'pushHandler',
95 2
                    [new Reference($this->buildContainerId($baseHandlerServiceId))]
96 2
                ]
97 2
            ]
98 2
        );
99
        // SfKernelEventLogger
100 2
        if (true === $config['kernel']['debug']) {
101 1
            $this->createService(
102 1
                $container,
103 1
                'subscriber.sf_kernel_logger',
104 1
                SfKernelLoggerSubscriber::class,
105 1
                [new Reference($this->buildContainerId('logger.sf_kernel_logger'))],
106 1
                ['event_dispatcher.subscriber']
107 1
            );
108 1
            $this->createService(
109 1
                $container,
110 1
                'logger.sf_kernel_logger',
111 1
                SfKernelEventLogger::class,
112 1
                [new Reference($this->buildContainerId('kernel'))]
113 1
            );
114 1
        }
115 2
    }
116
117
    /**
118
     * {@inheritdoc}
119
     */
120
    public function process(ContainerBuilder $container)
121
    {
122
    }
123
}
124