Completed
Pull Request — master (#556)
by Evgenij
02:53
created

ConfiguredContextFactoryTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 4
dl 0
loc 69
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B testCreateSerializationContext() 0 24 2
B contextConfigDataProvider() 0 27 1
1
<?php
2
3
namespace JMS\SerializerBundle\Tests\ContextFactory;
4
5
use JMS\Serializer\Context;
6
use JMS\SerializerBundle\ContextFactory\ConfiguredContextFactory;
7
8
/**
9
 * Class ConfiguredContextFactoryTest
10
 */
11
class ConfiguredContextFactoryTest extends \PHPUnit_Framework_TestCase
12
{
13
    /**
14
     * testCreateSerializationContext
15
     *
16
     * @param string $version
17
     * @param bool   $serializeNulls
18
     * @param array  $attributes
19
     * @param array  $groups
20
     * @param string $expectedInterface
21
     * @param string $expectedContextClass
22
     * @param string $factoryMethod
23
     *
24
     * @return void
25
     * @dataProvider contextConfigDataProvider
26
     */
27
    public function testCreateSerializationContext(
28
        $version,
29
        $serializeNulls,
30
        array $attributes,
31
        array $groups,
32
        $expectedInterface,
33
        $expectedContextClass,
34
        $factoryMethod
35
    ) {
36
        $object = new ConfiguredContextFactory($version, $serializeNulls, $attributes, $groups);
37
38
        $this->assertInstanceOf($expectedInterface, $object);
39
40
        $context = $object->$factoryMethod();
41
        /** @var Context $context */
42
        $this->assertInstanceOf($expectedContextClass, $context);
43
        $this->assertSame($serializeNulls, $context->shouldSerializeNull());
44
45
        $this->assertSame($version, $context->attributes->get('version')->get());
46
        $this->assertSame($groups, $context->attributes->get('groups')->get());
47
        foreach ($attributes as $k => $v) {
48
            $this->assertSame($v, $context->attributes->get($k)->get());
49
        }
50
    }
51
52
    public function contextConfigDataProvider()
53
    {
54
        return [
55
            [
56
                sprintf('%d.%d.%d', mt_rand(1, 10), mt_rand(1, 10), mt_rand(1, 10)),
57
                true,
58
                [
59
                    'x' => mt_rand(0, PHP_INT_MAX),
60
                ],
61
                [ 'Default', 'Registration' ],
62
                'JMS\Serializer\ContextFactory\SerializationContextFactoryInterface',
63
                'JMS\Serializer\SerializationContext',
64
                'createSerializationContext'
65
            ],
66
            [
67
                sprintf('%d.%d.%d', mt_rand(1, 10), mt_rand(1, 10), mt_rand(1, 10)),
68
                true,
69
                [
70
                    'x' => mt_rand(0, PHP_INT_MAX),
71
                ],
72
                [ 'Default', 'Registration' ],
73
                'JMS\Serializer\ContextFactory\DeserializationContextFactoryInterface',
74
                'JMS\Serializer\DeserializationContext',
75
                'createDeserializationContext'
76
            ],
77
        ];
78
    }
79
}
80