MonologHandlerPassTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 28
c 1
b 0
f 0
dl 0
loc 49
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A registerCompilerPass() 0 3 1
A testProcessChannel() 0 13 1
A testProcessChannelAllChannels() 0 13 1
A testProcessChannelExcludeChannels() 0 12 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of Ekino New Relic bundle.
7
 *
8
 * (c) Ekino - Thomas Rabaix <[email protected]>
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Ekino\NewRelicBundle\Tests\DependencyInjection\Compiler;
15
16
use Ekino\NewRelicBundle\DependencyInjection\Compiler\MonologHandlerPass;
17
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractCompilerPassTestCase;
18
use Symfony\Component\DependencyInjection\ContainerBuilder;
19
use Symfony\Component\DependencyInjection\Reference;
20
21
class MonologHandlerPassTest extends AbstractCompilerPassTestCase
22
{
23
    protected function registerCompilerPass(ContainerBuilder $container): void
24
    {
25
        $container->addCompilerPass(new MonologHandlerPass());
26
    }
27
28
    public function testProcessChannel()
29
    {
30
        $this->container->setParameter('ekino.new_relic.monolog', ['level' => 100, 'channels' => ['type' => 'inclusive', 'elements' => ['app', 'foo']]]);
31
        $this->container->setParameter('ekino.new_relic.application_name', 'app');
32
        $this->registerService('ekino.new_relic.monolog_handler', \Monolog\Handler\NewRelicHandler::class);
33
        $this->container->setAlias('ekino.new_relic.logs_handler', 'ekino.new_relic.monolog_handler')->setPublic(false);
34
        $this->registerService('monolog.logger', \Monolog\Logger::class)->setArgument(0, 'app');
35
        $this->registerService('monolog.logger.foo', \Monolog\Logger::class)->setArgument(0, 'foo');
36
37
        $this->compile();
38
39
        $this->assertContainerBuilderHasServiceDefinitionWithMethodCall('monolog.logger', 'pushHandler', [new Reference('ekino.new_relic.logs_handler')]);
40
        $this->assertContainerBuilderHasServiceDefinitionWithMethodCall('monolog.logger.foo', 'pushHandler', [new Reference('ekino.new_relic.logs_handler')]);
41
    }
42
43
    public function testProcessChannelAllChannels()
44
    {
45
        $this->container->setParameter('ekino.new_relic.monolog', ['level' => 100, 'channels' => null]);
46
        $this->container->setParameter('ekino.new_relic.application_name', 'app');
47
        $this->registerService('ekino.new_relic.monolog_handler', \Monolog\Handler\NewRelicHandler::class);
48
        $this->container->setAlias('ekino.new_relic.logs_handler', 'ekino.new_relic.monolog_handler')->setPublic(false);
49
        $this->registerService('monolog.logger', \Monolog\Logger::class)->setArgument(0, 'app');
50
        $this->registerService('monolog.logger.foo', \Monolog\Logger::class)->setArgument(0, 'foo');
51
52
        $this->compile();
53
54
        $this->assertContainerBuilderHasServiceDefinitionWithMethodCall('monolog.logger', 'pushHandler', [new Reference('ekino.new_relic.logs_handler')]);
55
        $this->assertContainerBuilderHasServiceDefinitionWithMethodCall('monolog.logger.foo', 'pushHandler', [new Reference('ekino.new_relic.logs_handler')]);
56
    }
57
58
    public function testProcessChannelExcludeChannels()
59
    {
60
        $this->container->setParameter('ekino.new_relic.monolog', ['level' => 100, 'channels' => ['type' => 'exclusive', 'elements' => ['foo']]]);
61
        $this->container->setParameter('ekino.new_relic.application_name', 'app');
62
        $this->registerService('ekino.new_relic.monolog_handler', \Monolog\Handler\NewRelicHandler::class);
63
        $this->container->setAlias('ekino.new_relic.logs_handler', 'ekino.new_relic.monolog_handler')->setPublic(false);
64
        $this->registerService('monolog.logger', \Monolog\Logger::class)->setArgument(0, 'app');
65
        $this->registerService('monolog.logger.foo', \Monolog\Logger::class)->setArgument(0, 'foo');
66
67
        $this->compile();
68
69
        $this->assertContainerBuilderHasServiceDefinitionWithMethodCall('monolog.logger', 'pushHandler', [new Reference('ekino.new_relic.logs_handler')]);
70
    }
71
}
72