From 27466498d02b4ed1f5ab397d88cfce8b40f46116 Mon Sep 17 00:00:00 2001 From: Vincent Touzet Date: Sun, 31 Mar 2019 20:44:41 +0200 Subject: [PATCH] [Messenger] Fix get in Doctrine Transport --- .../Doctrine/DoctrineTransportTest.php | 60 +++++++++++++++++++ .../Transport/Doctrine/Connection.php | 2 +- .../Transport/Doctrine/DoctrineTransport.php | 2 +- 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php new file mode 100644 index 000000000000..145397f889a0 --- /dev/null +++ b/src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineTransportTest.php @@ -0,0 +1,60 @@ + +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +namespace Symfony\Component\Messenger\Tests\Transport\Doctrine; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Messenger\Envelope; +use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage; +use Symfony\Component\Messenger\Transport\Doctrine\Connection; +use Symfony\Component\Messenger\Transport\Doctrine\DoctrineTransport; +use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; +use Symfony\Component\Messenger\Transport\TransportInterface; + +class DoctrineTransportTest extends TestCase +{ + public function testItIsATransport() + { + $transport = $this->getTransport(); + + $this->assertInstanceOf(TransportInterface::class, $transport); + } + + public function testReceivesMessages() + { + $transport = $this->getTransport( + $serializer = $this->getMockBuilder(SerializerInterface::class)->getMock(), + $connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock() + ); + + $decodedMessage = new DummyMessage('Decoded.'); + + $doctrineEnvelope = [ + 'id' => '5', + 'body' => 'body', + 'headers' => ['my' => 'header'], + ]; + + $serializer->method('decode')->with(['body' => 'body', 'headers' => ['my' => 'header']])->willReturn(new Envelope($decodedMessage)); + $connection->method('get')->willReturn($doctrineEnvelope); + + $envelopes = iterator_to_array($transport->get()); + $this->assertSame($decodedMessage, $envelopes[0]->getMessage()); + } + + private function getTransport(SerializerInterface $serializer = null, Connection $connection = null) + { + $serializer = $serializer ?: $this->getMockBuilder(SerializerInterface::class)->getMock(); + $connection = $connection ?: $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); + + 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 aadcb2fadc24..0b23267c8995 100644 --- a/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php @@ -231,7 +231,7 @@ private function getSchema(): Schema ->setNotnull(true); $table->addColumn('body', Type::TEXT) ->setNotnull(true); - $table->addColumn('headers', Type::STRING) + $table->addColumn('headers', Type::TEXT) ->setNotnull(true); $table->addColumn('queue_name', Type::STRING) ->setNotnull(true); diff --git a/src/Symfony/Component/Messenger/Transport/Doctrine/DoctrineTransport.php b/src/Symfony/Component/Messenger/Transport/Doctrine/DoctrineTransport.php index b9c1d8ee8c00..09d9d5cadfa9 100644 --- a/src/Symfony/Component/Messenger/Transport/Doctrine/DoctrineTransport.php +++ b/src/Symfony/Component/Messenger/Transport/Doctrine/DoctrineTransport.php @@ -39,7 +39,7 @@ public function __construct(Connection $connection, SerializerInterface $seriali */ public function get(): iterable { - ($this->receiver ?? $this->getReceiver())->get(); + return ($this->receiver ?? $this->getReceiver())->get(); } /**