Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MessageProcessorTest.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class MessageProcessorTest extends \PHPUnit\Framework\TestCase
14 {
18  private $messageStatusProcessor;
19 
23  private $resource;
24 
28  private $messageProcessor;
29 
35  protected function setUp()
36  {
37  $this->messageStatusProcessor = $this
38  ->getMockBuilder(\Magento\Framework\MessageQueue\MessageStatusProcessor::class)
39  ->disableOriginalConstructor()
40  ->getMock();
41  $this->resource = $this->getMockBuilder(\Magento\Framework\App\ResourceConnection::class)
42  ->disableOriginalConstructor()
43  ->getMock();
44 
45  $objectManagerHelper = new ObjectManagerHelper($this);
46  $this->messageProcessor = $objectManagerHelper->getObject(
47  \Magento\Framework\MessageQueue\MessageProcessor::class,
48  [
49  'messageStatusProcessor' => $this->messageStatusProcessor,
50  'resource' => $this->resource
51  ]
52  );
53  }
54 
60  public function testProcess()
61  {
62  $topicName = 'topic';
63  $messagesToAcknowledge = [];
64  $connection = $this->getMockBuilder(\Magento\Framework\DB\Adapter\AdapterInterface::class)
65  ->disableOriginalConstructor()
66  ->getMockForAbstractClass();
67  $connection->expects($this->atLeastOnce())->method('beginTransaction');
68  $connection->expects($this->atLeastOnce())->method('commit');
69  $this->resource->expects($this->atLeastOnce())->method('getConnection')->willReturn($connection);
70  $queue = $this->getMockBuilder(\Magento\Framework\MessageQueue\QueueInterface::class)
71  ->disableOriginalConstructor()
72  ->getMockForAbstractClass();
73  $configuration = $this->getMockBuilder(\Magento\Framework\MessageQueue\ConsumerConfigurationInterface::class)
74  ->disableOriginalConstructor()
75  ->getMockForAbstractClass();
76  $configuration->expects($this->atLeastOnce())->method('getHandlers')->willReturn([]);
77  $this->messageStatusProcessor->expects($this->exactly(2))->method('acknowledgeMessages');
78  $mergedMessage = $this->getMockBuilder(\Magento\Catalog\Api\Data\ProductInterface::class)
79  ->disableOriginalConstructor()
80  ->getMockForAbstractClass();
81  $message = $this->getMockBuilder(\Magento\Framework\MessageQueue\EnvelopeInterface::class)
82  ->disableOriginalConstructor()
83  ->getMockForAbstractClass();
84  $mergedMessages = [
85  $topicName => [$mergedMessage]
86  ];
87  $messages = [
88  $topicName => [$message]
89  ];
90 
91  $this->messageProcessor->process($queue, $configuration, $messages, $messagesToAcknowledge, $mergedMessages);
92  }
93 
100  {
101  $topicName = 'topic';
102  $messagesToAcknowledge = [];
103  $connection = $this->getMockBuilder(\Magento\Framework\DB\Adapter\AdapterInterface::class)
104  ->disableOriginalConstructor()
105  ->getMockForAbstractClass();
106  $connection->expects($this->atLeastOnce())->method('beginTransaction');
107  $connection->expects($this->never())->method('commit');
108  $connection->expects($this->atLeastOnce())->method('rollBack');
109  $this->resource->expects($this->atLeastOnce())->method('getConnection')->willReturn($connection);
110  $queue = $this->getMockBuilder(\Magento\Framework\MessageQueue\QueueInterface::class)
111  ->disableOriginalConstructor()
112  ->getMockForAbstractClass();
113  $configuration = $this->getMockBuilder(\Magento\Framework\MessageQueue\ConsumerConfigurationInterface::class)
114  ->disableOriginalConstructor()
115  ->getMockForAbstractClass();
116  $exception = new \Magento\Framework\MessageQueue\ConnectionLostException(__('Exception Message'));
117  $configuration->expects($this->atLeastOnce())->method('getHandlers')->willThrowException($exception);
118  $this->messageStatusProcessor->expects($this->once())->method('acknowledgeMessages');
119  $mergedMessage = $this->getMockBuilder(\Magento\Catalog\Api\Data\ProductInterface::class)
120  ->disableOriginalConstructor()
121  ->getMockForAbstractClass();
122  $message = $this->getMockBuilder(\Magento\Framework\MessageQueue\EnvelopeInterface::class)
123  ->disableOriginalConstructor()
124  ->getMockForAbstractClass();
125  $mergedMessages = [
126  $topicName => [$mergedMessage]
127  ];
128  $messages = [
129  $topicName => [$message]
130  ];
131 
132  $this->messageProcessor->process($queue, $configuration, $messages, $messagesToAcknowledge, $mergedMessages);
133  }
134 
140  public function testProcessWithException()
141  {
142  $topicName = 'topic';
143  $messagesToAcknowledge = [];
144  $connection = $this->getMockBuilder(\Magento\Framework\DB\Adapter\AdapterInterface::class)
145  ->disableOriginalConstructor()
146  ->getMockForAbstractClass();
147  $connection->expects($this->atLeastOnce())->method('beginTransaction');
148  $connection->expects($this->never())->method('commit');
149  $connection->expects($this->atLeastOnce())->method('rollBack');
150  $this->resource->expects($this->atLeastOnce())->method('getConnection')->willReturn($connection);
151  $queue = $this->getMockBuilder(\Magento\Framework\MessageQueue\QueueInterface::class)
152  ->disableOriginalConstructor()
153  ->getMockForAbstractClass();
154  $configuration = $this->getMockBuilder(\Magento\Framework\MessageQueue\ConsumerConfigurationInterface::class)
155  ->disableOriginalConstructor()
156  ->getMockForAbstractClass();
157  $exception = new \Exception();
158  $configuration->expects($this->atLeastOnce())->method('getHandlers')->willThrowException($exception);
159  $this->messageStatusProcessor->expects($this->once())->method('acknowledgeMessages');
160  $this->messageStatusProcessor->expects($this->atLeastOnce())->method('rejectMessages');
161  $mergedMessage = $this->getMockBuilder(\Magento\Catalog\Api\Data\ProductInterface::class)
162  ->disableOriginalConstructor()
163  ->getMockForAbstractClass();
164  $message = $this->getMockBuilder(\Magento\Framework\MessageQueue\EnvelopeInterface::class)
165  ->disableOriginalConstructor()
166  ->getMockForAbstractClass();
167  $mergedMessages = [
168  $topicName => [$mergedMessage]
169  ];
170  $messages = [
171  $topicName => [$message]
172  ];
173 
174  $this->messageProcessor->process($queue, $configuration, $messages, $messagesToAcknowledge, $mergedMessages);
175  }
176 }
$queue
Definition: queue.php:21
$configuration
Definition: index.php:33
__()
Definition: __.php:13
$message
$connection
Definition: bulk.php:13