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 faf6b8919b19..6a8f2b0bcb09 100644 --- a/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php @@ -230,7 +230,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(); } /**