[DoctrineBridge] no-op RegisterUidTypePass if DBAL types aren't loaded

This commit is contained in:
Christian Raue 2020-12-09 12:51:03 +01:00 committed by Alexander M. Turek
parent 4df63ab450
commit 765ae9e16c
2 changed files with 38 additions and 0 deletions

View File

@ -28,6 +28,10 @@ final class RegisterUidTypePass implements CompilerPassInterface
return;
}
if (!$container->hasParameter('doctrine.dbal.connection_factory.types')) {
return;
}
$typeDefinition = $container->getParameter('doctrine.dbal.connection_factory.types');
if (!isset($typeDefinition['uuid'])) {

View File

@ -0,0 +1,34 @@
<?php
namespace Symfony\Bridge\Doctrine\Tests\DependencyInjection\CompilerPass;
use PHPUnit\Framework\TestCase;
use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\RegisterUidTypePass;
use Symfony\Bridge\Doctrine\Types\UlidType;
use Symfony\Bridge\Doctrine\Types\UuidType;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class RegisterUidTypePassTest extends TestCase
{
public function testRegistered()
{
$container = new ContainerBuilder();
$container->setParameter('doctrine.dbal.connection_factory.types', ['foo' => 'bar']);
(new RegisterUidTypePass())->process($container);
$expected = [
'foo' => 'bar',
'uuid' => ['class' => UuidType::class],
'ulid' => ['class' => UlidType::class],
];
$this->assertSame($expected, $container->getParameter('doctrine.dbal.connection_factory.types'));
}
public function testRegisteredDontFail()
{
$container = new ContainerBuilder();
(new RegisterUidTypePass())->process($container);
$this->expectNotToPerformAssertions();
}
}