magento2-docker/dev/tests/integration/testsuite/Magento/MysqlMq/Model/Driver/QueueTest.php

69 lines
2.2 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\MysqlMq\Model\Driver;
use Magento\MysqlMq\Model\Driver\Queue;
/**
* Test for MySQL queue driver class.
*
* @magentoDbIsolation disabled
*/
class QueueTest extends \PHPUnit\Framework\TestCase
{
/**
* @var Queue
*/
protected $queue;
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
protected $objectManager;
protected function setUp(): void
{
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var \Magento\Framework\MessageQueue\Config\Data $queueConfig */
$queueConfig = $this->objectManager->get(\Magento\Framework\MessageQueue\Config\Data::class);
$queueConfig->reset();
$this->queue = $this->objectManager->create(
\Magento\MysqlMq\Model\Driver\Queue::class,
['queueName' => 'queue2']
);
}
protected function tearDown(): void
{
/** @var \Magento\Framework\MessageQueue\Config\Data $queueConfig */
$queueConfig = $this->objectManager->get(\Magento\Framework\MessageQueue\Config\Data::class);
$queueConfig->reset();
}
/**
* @magentoDataFixture Magento/MysqlMq/_files/queues.php
*/
public function testPushAndDequeue()
{
/** @var \Magento\Framework\MessageQueue\EnvelopeFactory $envelopFactory */
$envelopFactory = $this->objectManager->get(\Magento\Framework\MessageQueue\EnvelopeFactory::class);
$messageBody = '{"data": {"body": "Message body"}, "message_id": 1}';
$topicName = 'some.topic';
$envelop = $envelopFactory->create(['body' => $messageBody, 'properties' => ['topic_name' => $topicName]]);
$this->queue->push($envelop);
$messageFromQueue = $this->queue->dequeue();
$this->assertEquals($messageBody, $messageFromQueue->getBody());
$actualMessageProperties = $messageFromQueue->getProperties();
$this->assertArrayHasKey('topic_name', $actualMessageProperties);
$this->assertEquals($topicName, $actualMessageProperties['topic_name']);
}
}