17 private $messageResource;
33 private $messageStatusCollectionFactory;
38 private $queueManagement;
47 $this->messageResource = $this->getMockBuilder(\
Magento\MysqlMq\Model\
ResourceModel\Queue::class)
48 ->disableOriginalConstructor()->getMock();
49 $this->scopeConfig = $this->getMockBuilder(\
Magento\Framework\
App\Config\ScopeConfigInterface::class)
50 ->disableOriginalConstructor()->getMock();
51 $this->dateTime = $this->getMockBuilder(\
Magento\Framework\Stdlib\DateTime\DateTime::class)
52 ->disableOriginalConstructor()->getMock();
53 $this->messageStatusCollectionFactory = $this
55 ->setMethods([
'create'])
56 ->disableOriginalConstructor()
59 $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
61 \
Magento\MysqlMq\Model\QueueManagement::class,
63 'messageResource' => $this->messageResource,
64 'scopeConfig' => $this->scopeConfig,
65 'dateTime' => $this->dateTime,
66 'messageStatusCollectionFactory' => $this->messageStatusCollectionFactory,
78 $topicName =
'topic.name';
79 $queueNames = [
'queue0',
'queue1'];
82 $this->messageResource->expects($this->once())
83 ->method(
'saveMessage')->with($topicName,
$message)->willReturn($messageId);
84 $this->messageResource->expects($this->once())
85 ->method(
'linkQueues')->with($messageId, $queueNames)->willReturnSelf();
87 $this->queueManagement,
88 $this->queueManagement->addMessageToQueues($topicName,
$message, $queueNames)
99 $topicName =
'topic.name';
100 $queueNames = [
'queue0',
'queue1'];
101 $messages = [
'test_message0',
'test_message1'];
102 $messageIds = [1, 2];
103 $this->messageResource->expects($this->once())
104 ->method(
'saveMessages')->with($topicName, $messages)->willReturn($messageIds);
105 $this->messageResource->expects($this->once())
106 ->method(
'linkMessagesWithQueues')->with($messageIds, $queueNames)->willReturnSelf();
108 $this->queueManagement,
109 $this->queueManagement->addMessagesToQueues($topicName, $messages, $queueNames)
122 ->disableOriginalConstructor()->getMock();
123 $this->messageStatusCollectionFactory->expects($this->once())->method(
'create')->willReturn(
$collection);
124 $this->scopeConfig->expects($this->exactly(8))->method(
'getValue')
127 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_SUCCESSFUL_MESSAGES_LIFETIME,
128 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
131 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_FAILED_MESSAGES_LIFETIME,
132 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
135 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_NEW_MESSAGES_LIFETIME,
136 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
139 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_RETRY_IN_PROGRESS_AFTER,
140 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
143 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_SUCCESSFUL_MESSAGES_LIFETIME,
144 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
147 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_FAILED_MESSAGES_LIFETIME,
148 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
151 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_NEW_MESSAGES_LIFETIME,
152 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
155 \
Magento\MysqlMq\Model\QueueManagement::XML_PATH_RETRY_IN_PROGRESS_AFTER,
156 \
Magento\Store\Model\ScopeInterface::SCOPE_STORE,
159 $collection->expects($this->once())->method(
'addFieldToFilter')
164 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_COMPLETE,
165 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_ERROR,
166 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_NEW,
167 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_IN_PROGRESS,
173 $this->getMessageStatusMock(),
174 $this->getMessageStatusMock(),
175 $this->getMessageStatusMock(),
176 $this->getMessageStatusMock(),
178 $this->dateTime->expects($this->exactly(4))->method(
'gmtTimestamp')->willReturn(1486741063);
179 $messageStatuses[0]->expects($this->atLeastOnce())->method(
'getStatus')->willReturn(
180 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_COMPLETE
182 $messageStatuses[1]->expects($this->atLeastOnce())->method(
'getStatus')->willReturn(
183 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_ERROR
185 $messageStatuses[2]->expects($this->atLeastOnce())->method(
'getStatus')->willReturn(
186 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_NEW
188 $messageStatuses[3]->expects($this->atLeastOnce())->method(
'getStatus')->willReturn(
189 \
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_IN_PROGRESS
191 $messageStatuses[0]->expects($this->once())->method(
'setStatus')
192 ->with(\
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_TO_BE_DELETED)->willReturnSelf();
193 $messageStatuses[1]->expects($this->once())->method(
'setStatus')
194 ->with(\
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_TO_BE_DELETED)->willReturnSelf();
195 $messageStatuses[2]->expects($this->once())->method(
'setStatus')
196 ->with(\
Magento\MysqlMq\Model\QueueManagement::MESSAGE_STATUS_TO_BE_DELETED)->willReturnSelf();
197 $messageStatuses[0]->expects($this->once())->method(
'save')->willReturnSelf();
198 $messageStatuses[1]->expects($this->once())->method(
'save')->willReturnSelf();
199 $messageStatuses[2]->expects($this->once())->method(
'save')->willReturnSelf();
200 $messageStatuses[3]->expects($this->once())->method(
'getId')->willReturn($messageId);
201 $collection->expects($this->once())->method(
'getIterator')->willReturn(
new \ArrayIterator($messageStatuses));
202 $this->messageResource->expects($this->once())->method(
'pushBackForRetry')->with($messageId);
203 $this->messageResource->expects($this->once())->method(
'deleteMarkedMessages');
204 $this->queueManagement->markMessagesForDelete();
212 private function getMessageStatusMock()
214 $messageStatus = $this->getMockBuilder(\
Magento\MysqlMq\Model\MessageStatus::class)
215 ->setMethods([
'getStatus',
'setStatus',
'save',
'getId',
'getUpdatedAt'])
216 ->disableOriginalConstructor()->getMock();
217 $messageStatus->expects($this->once())->method(
'getUpdatedAt')->willReturn(
'2010-01-01 00:00:00');
218 return $messageStatus;
226 $messageIds = [1, 2];
228 $this->messageResource->expects($this->once())->method(
'changeStatus')->with($messageIds,
$status);
229 $this->queueManagement->changeStatus($messageIds,
$status);
testAddMessagesToQueues()
testMarkMessagesForDelete()
const MESSAGE_STATUS_TO_BE_DELETED