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