ExchangeTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\MysqlMq\Test\Unit\Model\Driver\Bulk;
  7. /**
  8. * Unit test for bulk Exchange model.
  9. */
  10. class ExchangeTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Framework\MessageQueue\ConfigInterface|\PHPUnit_Framework_MockObject_MockObject
  14. */
  15. private $messageQueueConfig;
  16. /**
  17. * @var \Magento\MysqlMq\Model\QueueManagement|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. private $queueManagement;
  20. /**
  21. * @var \Magento\MysqlMq\Model\Driver\Bulk\Exchange
  22. */
  23. private $exchange;
  24. /**
  25. * Set up.
  26. *
  27. * @return void
  28. */
  29. protected function setUp()
  30. {
  31. $this->messageQueueConfig = $this->getMockBuilder(\Magento\Framework\MessageQueue\ConfigInterface::class)
  32. ->disableOriginalConstructor()->getMock();
  33. $this->queueManagement = $this->getMockBuilder(\Magento\MysqlMq\Model\QueueManagement::class)
  34. ->disableOriginalConstructor()->getMock();
  35. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  36. $this->exchange = $objectManager->getObject(
  37. \Magento\MysqlMq\Model\Driver\Bulk\Exchange::class,
  38. [
  39. 'messageQueueConfig' => $this->messageQueueConfig,
  40. 'queueManagement' => $this->queueManagement,
  41. ]
  42. );
  43. }
  44. /**
  45. * Test for enqueue model.
  46. *
  47. * @return void
  48. */
  49. public function testEnqueue()
  50. {
  51. $topicName = 'topic.name';
  52. $queueNames = ['queue0', 'queue1'];
  53. $envelopeBody = 'serializedMessage';
  54. $this->messageQueueConfig->expects($this->once())
  55. ->method('getQueuesByTopic')->with($topicName)->willReturn($queueNames);
  56. $envelope = $this->getMockBuilder(\Magento\Framework\MessageQueue\EnvelopeInterface::class)
  57. ->disableOriginalConstructor()->getMock();
  58. $envelope->expects($this->once())->method('getBody')->willReturn($envelopeBody);
  59. $this->queueManagement->expects($this->once())
  60. ->method('addMessagesToQueues')->with($topicName, [$envelopeBody], $queueNames);
  61. $this->assertNull($this->exchange->enqueue($topicName, [$envelope]));
  62. }
  63. }