17 private $exchangeRepository;
22 private $envelopeFactory;
27 private $messageEncoder;
32 private $messageValidator;
37 private $publisherConfig;
42 private $messageIdGenerator;
56 $this->exchangeRepository = $this
57 ->getMockBuilder(\
Magento\Framework\MessageQueue\Bulk\ExchangeRepository::class)
58 ->disableOriginalConstructor()->getMock();
59 $this->envelopeFactory = $this->getMockBuilder(\
Magento\Framework\MessageQueue\EnvelopeFactory::class)
60 ->setMethods([
'create'])
61 ->disableOriginalConstructor()->getMock();
62 $this->messageEncoder = $this->getMockBuilder(\
Magento\Framework\MessageQueue\MessageEncoder::class)
63 ->disableOriginalConstructor()->getMock();
64 $this->messageValidator = $this->getMockBuilder(\
Magento\Framework\MessageQueue\MessageValidator::class)
65 ->disableOriginalConstructor()->getMock();
66 $this->publisherConfig = $this
67 ->getMockBuilder(\
Magento\Framework\MessageQueue\
Publisher\ConfigInterface::class)
68 ->disableOriginalConstructor()->getMock();
69 $this->messageIdGenerator = $this
70 ->getMockBuilder(\
Magento\Framework\MessageQueue\MessageIdGeneratorInterface::class)
71 ->disableOriginalConstructor()->getMock();
73 $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
75 \
Magento\Framework\MessageQueue\Bulk\Publisher::class,
77 'exchangeRepository' => $this->exchangeRepository,
78 'envelopeFactory' => $this->envelopeFactory,
79 'messageEncoder' => $this->messageEncoder,
80 'messageValidator' => $this->messageValidator,
81 'publisherConfig' => $this->publisherConfig,
82 'messageIdGenerator' => $this->messageIdGenerator,
94 $messageId =
'message-id-001';
95 $topicName =
'topic.name';
97 $encodedMessage =
'encodedMessageBody';
98 $connectionName =
'amqp';
99 $this->messageValidator->expects($this->once())->method(
'validate')->with($topicName,
$message);
100 $this->messageEncoder->expects($this->once())
101 ->method(
'encode')->with($topicName,
$message)->willReturn($encodedMessage);
102 $envelope = $this->getMockBuilder(\
Magento\Framework\MessageQueue\EnvelopeInterface::class)
103 ->disableOriginalConstructor()->getMock();
104 $this->messageIdGenerator->expects($this->once())
105 ->method(
'generate')->with($topicName)->willReturn($messageId);
106 $this->envelopeFactory->expects($this->once())->method(
'create')->with(
108 'body' => $encodedMessage,
110 'delivery_mode' => 2,
111 'message_id' => $messageId,
114 )->willReturn($envelope);
117 ->disableOriginalConstructor()->getMock();
118 $this->publisherConfig->expects($this->once())
119 ->method(
'getPublisher')->with($topicName)->willReturn($publisher);
122 ->disableOriginalConstructor()->getMock();
123 $publisher->expects($this->once())->method(
'getConnection')->with()->willReturn(
$connection);
124 $connection->expects($this->once())->method(
'getName')->with()->willReturn($connectionName);
126 ->getMockBuilder(\
Magento\Framework\Amqp\Bulk\Exchange::class)
127 ->disableOriginalConstructor()->getMock();
128 $this->exchangeRepository->expects($this->once())
129 ->method(
'getByConnectionName')->with($connectionName)->willReturn($exchange);
130 $exchange->expects($this->once())->method(
'enqueue')->with($topicName, [$envelope])->willReturn(
null);
131 $this->assertNull($this->publisher->publish($topicName, [
$message]));