69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			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']);
 | 
						|
    }
 | 
						|
}
 |