![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-mysql-mq/Test/Unit/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\MysqlMq\Test\Unit\Model; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\Stdlib\DateTime\DateTime; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\MysqlMq\Model\MessageStatus; use Magento\MysqlMq\Model\QueueManagement; use Magento\MysqlMq\Model\ResourceModel\MessageStatusCollection; use Magento\MysqlMq\Model\ResourceModel\MessageStatusCollectionFactory; use Magento\MysqlMq\Model\ResourceModel\Queue; use Magento\Store\Model\ScopeInterface; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Unit test for QueueManagement model. */ class QueueManagementTest extends TestCase { /** * @var Queue|MockObject */ private $messageResource; /** * @var ScopeConfigInterface|MockObject */ private $scopeConfig; /** * @var DateTime|MockObject */ private $dateTime; /** * @var MessageStatusCollectionFactory|MockObject */ private $messageStatusCollectionFactory; /** * @var QueueManagement */ private $queueManagement; /** * Set up. * * @return void */ protected function setUp(): void { $this->messageResource = $this->getMockBuilder(Queue::class) ->disableOriginalConstructor() ->getMock(); $this->scopeConfig = $this->getMockBuilder(ScopeConfigInterface::class) ->disableOriginalConstructor() ->getMockForAbstractClass(); $this->dateTime = $this->getMockBuilder(DateTime::class) ->disableOriginalConstructor() ->getMock(); $this->messageStatusCollectionFactory = $this ->getMockBuilder(MessageStatusCollectionFactory::class) ->setMethods(['create']) ->disableOriginalConstructor() ->getMock(); $objectManager = new ObjectManager($this); $this->queueManagement = $objectManager->getObject( QueueManagement::class, [ 'messageResource' => $this->messageResource, 'scopeConfig' => $this->scopeConfig, 'dateTime' => $this->dateTime, 'messageStatusCollectionFactory' => $this->messageStatusCollectionFactory, ] ); } /** * Test for addMessageToQueues method. * * @return void */ public function testAddMessageToQueues() { $topicName = 'topic.name'; $queueNames = ['queue0', 'queue1']; $message = 'test_message'; $messageId = 1; $this->messageResource->expects($this->once()) ->method('saveMessage')->with($topicName, $message)->willReturn($messageId); $this->messageResource->expects($this->once()) ->method('linkQueues')->with($messageId, $queueNames)->willReturnSelf(); $this->assertEquals( $this->queueManagement, $this->queueManagement->addMessageToQueues($topicName, $message, $queueNames) ); } /** * Test for addMessagesToQueues method. * * @return void */ public function testAddMessagesToQueues() { $topicName = 'topic.name'; $queueNames = ['queue0', 'queue1']; $messages = ['test_message0', 'test_message1']; $messageIds = [1, 2]; $this->messageResource->expects($this->once()) ->method('saveMessages')->with($topicName, $messages)->willReturn($messageIds); $this->messageResource->expects($this->once()) ->method('linkMessagesWithQueues')->with($messageIds, $queueNames)->willReturnSelf(); $this->assertEquals( $this->queueManagement, $this->queueManagement->addMessagesToQueues($topicName, $messages, $queueNames) ); } /** * Test for markMessagesForDelete method. * * @return void */ public function testMarkMessagesForDelete() { $messageId = 99; $collection = $this->getMockBuilder(MessageStatusCollection::class) ->disableOriginalConstructor() ->getMock(); $this->messageStatusCollectionFactory->expects($this->once())->method('create')->willReturn($collection); $this->scopeConfig->expects($this->exactly(8))->method('getValue') ->withConsecutive( [ QueueManagement::XML_PATH_SUCCESSFUL_MESSAGES_LIFETIME, ScopeInterface::SCOPE_STORE, ], [ QueueManagement::XML_PATH_FAILED_MESSAGES_LIFETIME, ScopeInterface::SCOPE_STORE, ], [ QueueManagement::XML_PATH_NEW_MESSAGES_LIFETIME, ScopeInterface::SCOPE_STORE, ], [ QueueManagement::XML_PATH_RETRY_IN_PROGRESS_AFTER, ScopeInterface::SCOPE_STORE, ], [ QueueManagement::XML_PATH_SUCCESSFUL_MESSAGES_LIFETIME, ScopeInterface::SCOPE_STORE, ], [ QueueManagement::XML_PATH_FAILED_MESSAGES_LIFETIME, ScopeInterface::SCOPE_STORE, ], [ QueueManagement::XML_PATH_NEW_MESSAGES_LIFETIME, ScopeInterface::SCOPE_STORE, ], [ QueueManagement::XML_PATH_RETRY_IN_PROGRESS_AFTER, ScopeInterface::SCOPE_STORE, ] )->willReturn(1); $collection->expects($this->once())->method('addFieldToFilter') ->with( 'status', [ 'in' => [ QueueManagement::MESSAGE_STATUS_COMPLETE, QueueManagement::MESSAGE_STATUS_ERROR, QueueManagement::MESSAGE_STATUS_NEW, QueueManagement::MESSAGE_STATUS_IN_PROGRESS, ] ] )->willReturnSelf(); $messageStatuses = [ $this->getMessageStatusMock(), $this->getMessageStatusMock(), $this->getMessageStatusMock(), $this->getMessageStatusMock(), ]; $this->dateTime->expects($this->exactly(4))->method('gmtTimestamp')->willReturn(1486741063); $messageStatuses[0]->expects($this->atLeastOnce())->method('getStatus')->willReturn( QueueManagement::MESSAGE_STATUS_COMPLETE ); $messageStatuses[1]->expects($this->atLeastOnce())->method('getStatus')->willReturn( QueueManagement::MESSAGE_STATUS_ERROR ); $messageStatuses[2]->expects($this->atLeastOnce())->method('getStatus')->willReturn( QueueManagement::MESSAGE_STATUS_NEW ); $messageStatuses[3]->expects($this->atLeastOnce())->method('getStatus')->willReturn( QueueManagement::MESSAGE_STATUS_IN_PROGRESS ); $messageStatuses[0]->expects($this->once())->method('setStatus') ->with(QueueManagement::MESSAGE_STATUS_TO_BE_DELETED)->willReturnSelf(); $messageStatuses[1]->expects($this->once())->method('setStatus') ->with(QueueManagement::MESSAGE_STATUS_TO_BE_DELETED)->willReturnSelf(); $messageStatuses[2]->expects($this->once())->method('setStatus') ->with(QueueManagement::MESSAGE_STATUS_TO_BE_DELETED)->willReturnSelf(); $messageStatuses[0]->expects($this->once())->method('save')->willReturnSelf(); $messageStatuses[1]->expects($this->once())->method('save')->willReturnSelf(); $messageStatuses[2]->expects($this->once())->method('save')->willReturnSelf(); $messageStatuses[3]->expects($this->once())->method('getId')->willReturn($messageId); $collection->expects($this->once())->method('getIterator')->willReturn(new \ArrayIterator($messageStatuses)); $this->messageResource->expects($this->once())->method('pushBackForRetry')->with($messageId); $this->messageResource->expects($this->once())->method('deleteMarkedMessages'); $this->queueManagement->markMessagesForDelete(); } /** * Create mock of MessageStatus method. * * @return MockObject */ private function getMessageStatusMock() { $messageStatus = $this->getMockBuilder(MessageStatus::class) ->setMethods(['getStatus', 'setStatus', 'save', 'getId', 'getUpdatedAt']) ->disableOriginalConstructor() ->getMock(); $messageStatus->expects($this->once())->method('getUpdatedAt')->willReturn('2010-01-01 00:00:00'); return $messageStatus; } /** * Test for changeStatus method. */ public function testChangeStatus() { $messageIds = [1, 2]; $status = QueueManagement::MESSAGE_STATUS_TO_BE_DELETED; $this->messageResource->expects($this->once())->method('changeStatus')->with($messageIds, $status); $this->queueManagement->changeStatus($messageIds, $status); } }