MetadataConfigFactoryTest::testInvokeWithConfig()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 9.2
c 0
b 0
f 0
cc 1
eloc 12
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Facile\DoctrineDDMTest\Unit\Factory;
6
7
use Facile\DoctrineDDM\Configuration\EntityMetadata;
8
use Facile\DoctrineDDM\Configuration\Metadata;
9
use Facile\DoctrineDDM\Factory\MetadataConfigFactory;
10
use Facile\DoctrineDDMTest\Framework\TestCase;
11
use Interop\Container\ContainerInterface;
12
13
class MetadataConfigFactoryTest extends TestCase
14
{
15
    public function testInvoke()
16
    {
17
        $config = [];
18
        $container = $this->prophesize(ContainerInterface::class);
19
        $container->get('config')->willReturn($config);
20
21
        $factory = new MetadataConfigFactory();
22
23
        $instance = $factory($container->reveal());
24
25
        $this->assertInstanceOf(Metadata::class, $instance);
26
        $this->assertCount(0, $instance->getEntityMetadatas());
27
    }
28
29
    public function testInvokeWithConfig()
30
    {
31
        $config = [
32
            MetadataConfigFactory::class => [
33
                'class1' => [
34
                    'discriminator_map' => [
35
                        'foo' => 'bar',
36
                    ],
37
                ],
38
            ],
39
        ];
40
        $container = $this->prophesize(ContainerInterface::class);
41
        $container->get('config')->willReturn($config);
42
43
        $factory = new MetadataConfigFactory();
44
45
        /** @var Metadata $instance */
46
        $instance = $factory($container->reveal());
47
48
        $this->assertInstanceOf(Metadata::class, $instance);
49
        $this->assertCount(1, $instance->getEntityMetadatas());
50
    }
51
52
    public function testCreateMetadata()
53
    {
54
        $config = [
55
            'class1' => [
56
                'discriminator_map' => [
57
                    'foo1' => 'bar1',
58
                    'foo2' => 'bar2',
59
                ],
60
            ],
61
            'class2' => [
62
                'discriminator_map' => [
63
                    'foo3' => 'bar3',
64
                ],
65
            ],
66
        ];
67
68
        $factory = new MetadataConfigFactory();
69
70
        /** @var Metadata $instance */
71
        $instance = $factory->createMetadata($config);
72
73
        $this->assertInstanceOf(Metadata::class, $instance);
74
        $this->assertCount(2, $instance->getEntityMetadatas());
75
76
        $entityMetadata1 = $instance->getEntityMetadata('class1');
77
        $entityMetadata2 = $instance->getEntityMetadata('class2');
78
79
        $this->assertInstanceOf(EntityMetadata::class, $entityMetadata1);
80
        $this->assertInstanceOf(EntityMetadata::class, $entityMetadata2);
81
82
        $this->assertEquals('class1', $entityMetadata1->getEntityClass());
83
        $this->assertEquals('class2', $entityMetadata2->getEntityClass());
84
85
        $this->assertEquals(
86
            [
87
                'foo1' => 'bar1',
88
                'foo2' => 'bar2',
89
            ],
90
            $entityMetadata1->getDiscriminatorMap()
91
        );
92
        $this->assertEquals(
93
            [
94
                'foo3' => 'bar3',
95
            ],
96
            $entityMetadata2->getDiscriminatorMap()
97
        );
98
    }
99
}
100