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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
<?php
namespace Doctrine\Tests\Common\Annotations\Ticket;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\DocParser;
use PHPUnit\Framework\TestCase;
use ReflectionClass;
use function array_combine;
use function array_map;
//Some class named Entity in the global namespace
include __DIR__ . '/DCOM58Entity.php';
/**
* @group DCOM58
*/
class DCOM58Test extends TestCase
{
public function testIssue(): void
{
$reader = new AnnotationReader();
$result = $reader->getClassAnnotations(new ReflectionClass(__NAMESPACE__ . '\MappedClass'));
$classAnnotations = array_combine(
array_map('get_class', $result),
$result
);
self::assertArrayNotHasKey('', $classAnnotations, 'Class "xxx" is not a valid entity or mapped super class.');
}
public function testIssueGlobalNamespace(): void
{
$docblock = '@Entity';
$parser = new DocParser();
$parser->setImports(['__NAMESPACE__' => 'Doctrine\Tests\Common\Annotations\Ticket\Doctrine\ORM\Mapping']);
$annots = $parser->parse($docblock);
self::assertCount(1, $annots);
self::assertInstanceOf(Doctrine\ORM\Mapping\Entity::class, $annots[0]);
}
public function testIssueNamespaces(): void
{
$docblock = '@Entity';
$parser = new DocParser();
$parser->addNamespace('Doctrine\Tests\Common\Annotations\Ticket\Doctrine\ORM');
$annots = $parser->parse($docblock);
self::assertCount(1, $annots);
self::assertInstanceOf(Doctrine\ORM\Entity::class, $annots[0]);
}
public function testIssueMultipleNamespaces(): void
{
$docblock = '@Entity';
$parser = new DocParser();
$parser->addNamespace('Doctrine\Tests\Common\Annotations\Ticket\Doctrine\ORM\Mapping');
$parser->addNamespace('Doctrine\Tests\Common\Annotations\Ticket\Doctrine\ORM');
$annots = $parser->parse($docblock);
self::assertCount(1, $annots);
self::assertInstanceOf(Doctrine\ORM\Mapping\Entity::class, $annots[0]);
}
public function testIssueWithNamespacesOrImports(): void
{
$docblock = '@Entity';
$parser = new DocParser();
$annots = $parser->parse($docblock);
self::assertCount(1, $annots);
self::assertInstanceOf(\Entity::class, $annots[0]);
}
}
/**
* @Entity
*/
class MappedClass
{
}
namespace Doctrine\Tests\Common\Annotations\Ticket\Doctrine\ORM\Mapping;
/**
* @Annotation
*/
class Entity
{
}
namespace Doctrine\Tests\Common\Annotations\Ticket\Doctrine\ORM;
/**
* @Annotation
*/
class Entity
{
}
|