Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MergedMessageProcessorTest.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class MergedMessageProcessorTest extends \PHPUnit\Framework\TestCase
14 {
18  private $messageStatusProcessor;
19 
23  private $mergedMessageProcessor;
24 
30  protected function setUp()
31  {
32  $this->messageStatusProcessor = $this
33  ->getMockBuilder(\Magento\Framework\MessageQueue\MessageStatusProcessor::class)
34  ->disableOriginalConstructor()
35  ->getMock();
36 
37  $objectManagerHelper = new ObjectManagerHelper($this);
38  $this->mergedMessageProcessor = $objectManagerHelper->getObject(
39  \Magento\Framework\MessageQueue\MergedMessageProcessor::class,
40  [
41  'messageStatusProcessor' => $this->messageStatusProcessor
42  ]
43  );
44  }
45 
51  public function testProcess()
52  {
53  $topicName = 'topic';
54  $messageId = 1;
55  $messagesToAcknowledge = [];
56  $queue = $this->getMockBuilder(\Magento\Framework\MessageQueue\QueueInterface::class)
57  ->disableOriginalConstructor()
58  ->getMockForAbstractClass();
59  $configuration = $this->getMockBuilder(\Magento\Framework\MessageQueue\ConsumerConfigurationInterface::class)
60  ->disableOriginalConstructor()
61  ->getMockForAbstractClass();
62  $configuration->expects($this->atLeastOnce())->method('getHandlers')->willReturn([]);
63  $this->messageStatusProcessor->expects($this->exactly(2))->method('acknowledgeMessages');
64  $originalMessage = $this->getMockBuilder(\Magento\Framework\MessageQueue\EnvelopeInterface::class)
65  ->disableOriginalConstructor()
66  ->getMockForAbstractClass();
67  $mergedMessage = $this->getMockBuilder(\Magento\Framework\MessageQueue\MergedMessageInterface::class)
68  ->disableOriginalConstructor()
69  ->getMockForAbstractClass();
70  $mergedMessage->expects($this->atLeastOnce())->method('getOriginalMessagesIds')->willReturn([$messageId]);
71  $mergedMessages = [
72  $topicName => [$mergedMessage]
73  ];
74  $messages = [$messageId => $originalMessage];
75 
76  $this->mergedMessageProcessor->process(
77  $queue,
79  $messages,
80  $messagesToAcknowledge,
81  $mergedMessages
82  );
83  }
84 
90  public function testProcessWithException()
91  {
92  $topicName = 'topic';
93  $messageId = 1;
94  $messagesToAcknowledge = [];
95  $queue = $this->getMockBuilder(\Magento\Framework\MessageQueue\QueueInterface::class)
96  ->disableOriginalConstructor()
97  ->getMockForAbstractClass();
98  $configuration = $this->getMockBuilder(\Magento\Framework\MessageQueue\ConsumerConfigurationInterface::class)
99  ->disableOriginalConstructor()
100  ->getMockForAbstractClass();
101  $this->messageStatusProcessor->expects($this->once())->method('acknowledgeMessages');
102  $exception = new \Exception();
103  $configuration->expects($this->atLeastOnce())->method('getHandlers')->willThrowException($exception);
104  $this->messageStatusProcessor->expects($this->atLeastOnce())->method('rejectMessages');
105  $originalMessage = $this->getMockBuilder(\Magento\Framework\MessageQueue\EnvelopeInterface::class)
106  ->disableOriginalConstructor()
107  ->getMockForAbstractClass();
108  $mergedMessage = $this->getMockBuilder(\Magento\Framework\MessageQueue\MergedMessageInterface::class)
109  ->disableOriginalConstructor()
110  ->getMockForAbstractClass();
111  $mergedMessages = [
112  $topicName => [$mergedMessage]
113  ];
114  $messages = [$messageId => $originalMessage];
115 
116  $this->mergedMessageProcessor->process(
117  $queue,
119  $messages,
120  $messagesToAcknowledge,
121  $mergedMessages
122  );
123  }
124 }
$queue
Definition: queue.php:21
$configuration
Definition: index.php:33