Failed Conditions
Pull Request — master (#6392)
by Alessandro
21:55 queued 10:50
created

HierarchyDiscriminatorResolverTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 46
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B testResolveDiscriminatorsForClass() 0 25 1
A testResolveDiscriminatorsForClassWithNoSubclasses() 0 17 1
1
<?php
2
3
namespace Doctrine\Tests\ORM\Utility;
4
5
use Doctrine\ORM\EntityManagerInterface;
6
use Doctrine\ORM\Mapping\ClassMetadata;
7
use Doctrine\ORM\Utility\HierarchyDiscriminatorResolver;
8
use PHPUnit\Framework\TestCase;
9
use Prophecy\Argument;
10
11
class HierarchyDiscriminatorResolverTest extends TestCase
12
{
13
    public function testResolveDiscriminatorsForClass()
14
    {
15
        $childClassMetadata = new ClassMetadata('ChildEntity');
16
        $childClassMetadata->name = 'Some\Class\Child\Name';
17
        $childClassMetadata->discriminatorValue = 'child-discriminator';
18
        
19
        $classMetadata = new ClassMetadata('Entity');
20
        $classMetadata->subClasses = [$childClassMetadata->name];
21
        $classMetadata->name = 'Some\Class\Name';
22
        $classMetadata->discriminatorValue = 'discriminator';
23
24
        $em = $this->prophesize(EntityManagerInterface::class);
25
        $em->getClassMetadata($classMetadata->name)
26
            ->shouldBeCalled()
27
            ->willReturn($classMetadata);
28
        $em->getClassMetadata($childClassMetadata->name)
29
            ->shouldBeCalled()
30
            ->willReturn($childClassMetadata);
31
32
        $discriminators = HierarchyDiscriminatorResolver::resolveDiscriminatorsForClass($classMetadata, $em->reveal());
33
        
34
        $this->assertCount(2, $discriminators);
35
        $this->assertArrayHasKey($classMetadata->discriminatorValue, $discriminators);
36
        $this->assertArrayHasKey($childClassMetadata->discriminatorValue, $discriminators);
37
    }
38
39
    public function testResolveDiscriminatorsForClassWithNoSubclasses()
40
    {
41
        $classMetadata = new ClassMetadata('Entity');
42
        $classMetadata->subClasses = [];
43
        $classMetadata->name = 'Some\Class\Name';
44
        $classMetadata->discriminatorValue = 'discriminator';
45
46
        $em = $this->prophesize(EntityManagerInterface::class);
47
        $em->getClassMetadata($classMetadata->name)
48
            ->shouldBeCalled()
49
            ->willReturn($classMetadata);
50
51
        $discriminators = HierarchyDiscriminatorResolver::resolveDiscriminatorsForClass($classMetadata, $em->reveal());
52
        
53
        $this->assertCount(1, $discriminators);
54
        $this->assertArrayHasKey($classMetadata->discriminatorValue, $discriminators);
55
    }
56
}
57