Failed Conditions
Pull Request — master (#6392)
by Alessandro
19:58
created

testResolveDiscriminatorsForClass()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 25
rs 8.8571
cc 1
eloc 19
nc 1
nop 0
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