From 93d0dc825e8add6ff84efd8d511277c36b10abe7 Mon Sep 17 00:00:00 2001 From: Vincent Touzet Date: Sat, 20 Jul 2019 20:49:03 +0200 Subject: [PATCH] [Messenger] Retrieve table default options from the SchemaManager --- .../Transport/Doctrine/ConnectionTest.php | 34 +++++++++---------- .../Doctrine/DoctrineReceiverTest.php | 4 +-- .../Transport/Doctrine/DoctrineSenderTest.php | 12 +++---- .../Doctrine/DoctrineTransportFactoryTest.php | 20 ++++++----- .../Doctrine/DoctrineTransportTest.php | 8 ++--- .../Transport/Doctrine/Connection.php | 2 +- 6 files changed, 39 insertions(+), 41 deletions(-) diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/ConnectionTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/ConnectionTest.php index d2caf2dfab10..28e54a9b36de 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/ConnectionTest.php @@ -15,6 +15,8 @@ use Doctrine\DBAL\Driver\Statement; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Query\QueryBuilder; +use Doctrine\DBAL\Schema\AbstractSchemaManager; +use Doctrine\DBAL\Schema\SchemaConfig; use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer; use PHPUnit\Framework\TestCase; use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage; @@ -102,25 +104,26 @@ public function testItThrowsATransportExceptionIfItCannotRejectMessage() private function getDBALConnectionMock() { - $driverConnection = $this->getMockBuilder(\Doctrine\DBAL\Connection::class) - ->disableOriginalConstructor() - ->getMock(); - $platform = $this->getMockBuilder(AbstractPlatform::class) - ->getMock(); + $driverConnection = $this->createMock(\Doctrine\DBAL\Connection::class); + $platform = $this->createMock(AbstractPlatform::class); $platform->method('getWriteLockSQL')->willReturn('FOR UPDATE'); - $configuration = $this->getMockBuilder(\Doctrine\DBAL\Configuration::class) - ->getMock(); + $configuration = $this->createMock(\Doctrine\DBAL\Configuration::class); $driverConnection->method('getDatabasePlatform')->willReturn($platform); $driverConnection->method('getConfiguration')->willReturn($configuration); + $schemaManager = $this->createMock(AbstractSchemaManager::class); + $schemaConfig = $this->createMock(SchemaConfig::class); + $schemaConfig->method('getMaxIdentifierLength')->willReturn(63); + $schemaConfig->method('getDefaultTableOptions')->willReturn([]); + $schemaManager->method('createSchemaConfig')->willReturn($schemaConfig); + $driverConnection->method('getSchemaManager')->willReturn($schemaManager); + return $driverConnection; } private function getQueryBuilderMock() { - $queryBuilder = $this->getMockBuilder(QueryBuilder::class) - ->disableOriginalConstructor() - ->getMock(); + $queryBuilder = $this->createMock(QueryBuilder::class); $queryBuilder->method('select')->willReturn($queryBuilder); $queryBuilder->method('update')->willReturn($queryBuilder); @@ -138,9 +141,7 @@ private function getQueryBuilderMock() private function getStatementMock($expectedResult) { - $stmt = $this->getMockBuilder(Statement::class) - ->disableOriginalConstructor() - ->getMock(); + $stmt = $this->createMock(Statement::class); $stmt->expects($this->once()) ->method('fetch') ->willReturn($expectedResult); @@ -150,8 +151,7 @@ private function getStatementMock($expectedResult) private function getSchemaSynchronizerMock() { - return $this->getMockBuilder(SchemaSynchronizer::class) - ->getMock(); + return $this->createMock(SchemaSynchronizer::class); } /** @@ -307,9 +307,7 @@ public function testFindAll() 'headers' => json_encode(['type' => DummyMessage::class]), ]; - $stmt = $this->getMockBuilder(Statement::class) - ->disableOriginalConstructor() - ->getMock(); + $stmt = $this->createMock(Statement::class); $stmt->expects($this->once()) ->method('fetchAll') ->willReturn([$message1, $message2]); diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineReceiverTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineReceiverTest.php index 43a0ad9fe64e..c4f73c94ca61 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineReceiverTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineReceiverTest.php @@ -32,7 +32,7 @@ public function testItReturnsTheDecodedMessageToTheHandler() $serializer = $this->createSerializer(); $doctrineEnvelope = $this->createDoctrineEnvelope(); - $connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); + $connection = $this->createMock(Connection::class); $connection->method('get')->willReturn($doctrineEnvelope); $receiver = new DoctrineReceiver($connection, $serializer); @@ -62,7 +62,7 @@ public function testItRejectTheMessageIfThereIsAMessageDecodingFailedException() $serializer->method('decode')->willThrowException(new MessageDecodingFailedException()); $doctrineEnvelop = $this->createDoctrineEnvelope(); - $connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); + $connection = $this->createMock(Connection::class); $connection->method('get')->willReturn($doctrineEnvelop); $connection->expects($this->once())->method('reject'); diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineSenderTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineSenderTest.php index dcc90c67854b..c65c72ecf439 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineSenderTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineSenderTest.php @@ -27,12 +27,10 @@ public function testSend() $envelope = new Envelope(new DummyMessage('Oy')); $encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class]]; - $connection = $this->getMockBuilder(Connection::class) - ->disableOriginalConstructor() - ->getMock(); + $connection = $this->createMock(Connection::class); $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'])->willReturn(15); - $serializer = $this->getMockBuilder(SerializerInterface::class)->getMock(); + $serializer = $this->createMock(SerializerInterface::class); $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); $sender = new DoctrineSender($connection, $serializer); @@ -49,12 +47,10 @@ public function testSendWithDelay() $envelope = (new Envelope(new DummyMessage('Oy')))->with(new DelayStamp(500)); $encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class]]; - $connection = $this->getMockBuilder(Connection::class) - ->disableOriginalConstructor() - ->getMock(); + $connection = $this->createMock(Connection::class); $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'], 500); - $serializer = $this->getMockBuilder(SerializerInterface::class)->getMock(); + $serializer = $this->createMock(SerializerInterface::class); $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); $sender = new DoctrineSender($connection, $serializer); diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportFactoryTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportFactoryTest.php index 9129ac629980..d9cdaa1dab4b 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportFactoryTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportFactoryTest.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Messenger\Tests\Transport\Doctrine; +use Doctrine\DBAL\Schema\AbstractSchemaManager; +use Doctrine\DBAL\Schema\SchemaConfig; use PHPUnit\Framework\TestCase; use Symfony\Bridge\Doctrine\RegistryInterface; use Symfony\Component\Messenger\Transport\Doctrine\Connection; @@ -23,7 +25,7 @@ class DoctrineTransportFactoryTest extends TestCase public function testSupports() { $factory = new DoctrineTransportFactory( - $this->getMockBuilder(RegistryInterface::class)->getMock() + $this->createMock(RegistryInterface::class) ); $this->assertTrue($factory->supports('doctrine://default', [])); @@ -32,19 +34,21 @@ public function testSupports() public function testCreateTransport() { - $connection = $this->getMockBuilder(\Doctrine\DBAL\Connection::class) - ->disableOriginalConstructor() - ->getMock(); - $registry = $this->getMockBuilder(RegistryInterface::class)->getMock(); + $driverConnection = $this->createMock(\Doctrine\DBAL\Connection::class); + $schemaManager = $this->createMock(AbstractSchemaManager::class); + $schemaConfig = $this->createMock(SchemaConfig::class); + $schemaManager->method('createSchemaConfig')->willReturn($schemaConfig); + $driverConnection->method('getSchemaManager')->willReturn($schemaManager); + $registry = $this->createMock(RegistryInterface::class); $registry->expects($this->once()) ->method('getConnection') - ->willReturn($connection); + ->willReturn($driverConnection); $factory = new DoctrineTransportFactory($registry); $serializer = $this->createMock(SerializerInterface::class); $this->assertEquals( - new DoctrineTransport(new Connection(Connection::buildConfiguration('doctrine://default'), $connection), $serializer), + new DoctrineTransport(new Connection(Connection::buildConfiguration('doctrine://default'), $driverConnection), $serializer), $factory->createTransport('doctrine://default', [], $serializer) ); } @@ -55,7 +59,7 @@ public function testCreateTransport() */ public function testCreateTransportMustThrowAnExceptionIfManagerIsNotFound() { - $registry = $this->getMockBuilder(RegistryInterface::class)->getMock(); + $registry = $this->createMock(RegistryInterface::class); $registry->expects($this->once()) ->method('getConnection') ->willReturnCallback(function () { diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php index ad9f9dba613d..2ed5d34db40c 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php @@ -31,8 +31,8 @@ public function testItIsATransport() public function testReceivesMessages() { $transport = $this->getTransport( - $serializer = $this->getMockBuilder(SerializerInterface::class)->getMock(), - $connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock() + $serializer = $this->createMock(SerializerInterface::class), + $connection = $this->createMock(Connection::class) ); $decodedMessage = new DummyMessage('Decoded.'); @@ -52,8 +52,8 @@ public function testReceivesMessages() private function getTransport(SerializerInterface $serializer = null, Connection $connection = null) { - $serializer = $serializer ?: $this->getMockBuilder(SerializerInterface::class)->getMock(); - $connection = $connection ?: $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); + $serializer = $serializer ?: $this->createMock(SerializerInterface::class); + $connection = $connection ?: $this->createMock(Connection::class); return new DoctrineTransport($connection, $serializer); } diff --git a/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php b/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php index c8692ba3486c..d86707b81b7f 100644 --- a/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php @@ -304,7 +304,7 @@ private function executeQuery(string $sql, array $parameters = []) private function getSchema(): Schema { - $schema = new Schema(); + $schema = new Schema([], [], $this->driverConnection->getSchemaManager()->createSchemaConfig()); $table = $schema->createTable($this->configuration['table_name']); $table->addColumn('id', Type::BIGINT) ->setAutoincrement(true)