Passed
Push — master ( a71cc4...1302d4 )
by Vincent
21:00 queued 11:57
created

SerializerNormalizerPassTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 19
c 0
b 0
f 0
dl 0
loc 38
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A test_throw_exception_when_no_normalizers() 0 9 1
A test_services_are_ordered_according_to_priority() 0 19 1
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
/**
11
 *
12
 */
13
class SerializerNormalizerPassTest extends TestCase
14
{
15
    /**
16
     *
17
     */
18
    public function test_throw_exception_when_no_normalizers()
19
    {
20
        $this->expectException(\RuntimeException::class);
21
        $this->expectExceptionMessage('You must tag at least one service as "bdf_serializer.normalizer" to use the "bdf_serializer.normalizer.loader" service');
22
        $container = new ContainerBuilder();
23
        $container->register('bdf_serializer.normalizer.loader');
24
25
        $serializerPass = new SerializerNormalizerPass();
26
        $serializerPass->process($container);
27
    }
28
29
    /**
30
     *
31
     */
32
    public function test_services_are_ordered_according_to_priority()
33
    {
34
        $container = new ContainerBuilder();
35
36
        $definition = $container->register('bdf_serializer.normalizer.loader')->setArguments([null]);
37
        $container->register('n2')->addTag('bdf_serializer.normalizer', ['priority' => 100]);
38
        $container->register('n1')->addTag('bdf_serializer.normalizer', ['priority' => 200]);
39
        $container->register('n3')->addTag('bdf_serializer.normalizer');
40
41
        $serializerPass = new SerializerNormalizerPass();
42
        $serializerPass->process($container);
43
44
        $expected = [
45
            new Reference('n1'),
46
            new Reference('n2'),
47
            new Reference('n3'),
48
        ];
49
50
        $this->assertEquals($expected, $definition->getArgument(0));
51
    }
52
}