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
|
<?php
declare(strict_types=1);
namespace Doctrine\Tests\ORM\Functional\Ticket;
use Doctrine\Common\EventManager;
use Doctrine\DBAL\Connection;
use Doctrine\ORM\Configuration;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\ClassMetadataFactory;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
use Doctrine\Persistence\Mapping\Driver\MappingDriver;
use Doctrine\Tests\PHPUnitCompatibility\MockBuilderCompatibilityTools;
use PHPUnit\Framework\TestCase;
/** @group DDC-2359 */
class DDC2359Test extends TestCase
{
use MockBuilderCompatibilityTools;
/**
* Verifies that {@see \Doctrine\ORM\Mapping\ClassMetadataFactory::wakeupReflection} is
* not called twice when loading metadata from a driver
*/
public function testIssue(): void
{
$mockDriver = $this->createMock(MappingDriver::class);
$mockMetadata = $this->createMock(ClassMetadata::class);
$entityManager = $this->createMock(EntityManager::class);
$metadataFactory = $this
->getMockBuilderWithOnlyMethods(ClassMetadataFactory::class, ['newClassMetadataInstance', 'wakeupReflection'])
->getMock();
$configuration = $this
->getMockBuilderWithOnlyMethods(Configuration::class, ['getMetadataDriverImpl'])
->getMock();
$connection = $this->createMock(Connection::class);
$configuration
->method('getMetadataDriverImpl')
->will(self::returnValue($mockDriver));
$entityManager->expects(self::any())->method('getConfiguration')->will(self::returnValue($configuration));
$entityManager->expects(self::any())->method('getConnection')->will(self::returnValue($connection));
$entityManager
->method('getEventManager')
->will(self::returnValue($this->createMock(EventManager::class)));
$metadataFactory->method('newClassMetadataInstance')->will(self::returnValue($mockMetadata));
$metadataFactory->expects(self::once())->method('wakeupReflection');
$metadataFactory->setEntityManager($entityManager);
$mockMetadata->method('getName')->willReturn(DDC2359Foo::class);
self::assertSame($mockMetadata, $metadataFactory->getMetadataFor(DDC2359Foo::class));
}
}
/** @Entity */
class DDC2359Foo
{
/**
* @var int
* @Id
* @Column(type="integer")
* @GeneratedValue
*/
public $id;
}
|