testServicesAreOrderedAccordingToPriority()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 1
Metric Value
eloc 12
c 1
b 1
f 1
dl 0
loc 19
rs 9.8666
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Bdf\SerializerBundle\Tests\DependencyInjection\Compiler;
4
5
use Bdf\SerializerBundle\DependencyInjection\Compiler\SerializerNormalizerPass;
6
use PHPUnit\Framework\TestCase;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Reference;
9
10
class SerializerNormalizerPassTest extends TestCase
11
{
12
    public function testThrowExceptionWhenNoNormalizers()
13
    {
14
        $this->expectException(\RuntimeException::class);
15
        $this->expectExceptionMessage('You must tag at least one service as "bdf_serializer.normalizer" to use the "bdf_serializer.normalizer.loader" service');
16
        $container = new ContainerBuilder();
17
        $container->register('bdf_serializer.normalizer.loader');
18
19
        $serializerPass = new SerializerNormalizerPass();
20
        $serializerPass->process($container);
21
    }
22
23
    public function testServicesAreOrderedAccordingToPriority()
24
    {
25
        $container = new ContainerBuilder();
26
27
        $definition = $container->register('bdf_serializer.normalizer.loader')->setArguments([null]);
28
        $container->register('n2')->addTag('bdf_serializer.normalizer', ['priority' => 100]);
29
        $container->register('n1')->addTag('bdf_serializer.normalizer', ['priority' => 200]);
30
        $container->register('n3')->addTag('bdf_serializer.normalizer');
31
32
        $serializerPass = new SerializerNormalizerPass();
33
        $serializerPass->process($container);
34
35
        $expected = [
36
            new Reference('n1'),
37
            new Reference('n2'),
38
            new Reference('n3'),
39
        ];
40
41
        $this->assertEquals($expected, $definition->getArgument(0));
42
    }
43
}
44