39 private $publisherConfig;
53 private $messageValidator;
60 private $messageEncoder;
67 private $exchangeRepository;
74 private $envelopeFactory;
81 $this->publisherConfig = $this->getMockBuilder(PublisherConfig::class)
82 ->disableOriginalConstructor()
84 $this->amqpConfig = $this->getMockBuilder(AmqpConfig::class)
85 ->disableOriginalConstructor()
87 $this->messageValidator = $this->getMockBuilder(MessageValidator::class)
88 ->disableOriginalConstructor()
90 $this->messageEncoder = $this->getMockBuilder(MessageEncoder::class)
91 ->disableOriginalConstructor()
93 $this->exchangeRepository = $this->getMockBuilder(ExchangeRepository::class)
94 ->disableOriginalConstructor()
96 $this->envelopeFactory = $this->getMockBuilder(EnvelopeFactory::class)
97 ->disableOriginalConstructor()
103 'messageValidator' => $this->messageValidator,
104 'envelopeFactory' => $this->envelopeFactory,
105 'messageEncoder' => $this->messageEncoder,
106 'exchangeRepository' => $this->exchangeRepository,
109 $objectManager->setBackwardCompatibleProperty($this->publisher,
'publisherConfig', $this->publisherConfig);
110 $objectManager->setBackwardCompatibleProperty($this->publisher,
'amqpConfig', $this->amqpConfig);
118 $topicName =
'tesTopicName';
119 $data = [
'testData'];
120 $encodedData =
'testEncodedData';
123 $exchange = $this->getMockBuilder(Exchange::class)
124 ->disableOriginalConstructor()
126 $exchange->expects(self::once())
128 ->with(self::identicalTo($topicName), self::identicalTo($envelope))
130 $connection = $this->getMockBuilder(PublisherConnection::class)
131 ->disableOriginalConstructor()
135 ->willReturn(
'amqp');
136 $publisher = $this->getMockBuilder(PublisherConfigItem::class)
137 ->disableOriginalConstructor()
139 $publisher->expects(self::once())
140 ->method(
'getConnection')
142 $this->messageValidator->expects(self::once())
143 ->method(
'validate');
144 $this->messageEncoder->expects(self::once())
146 ->with(self::identicalTo($topicName), self::identicalTo(
$data))
147 ->willReturn($encodedData);
148 $this->envelopeFactory->expects(self::once())
150 ->willReturn($envelope);
151 $this->publisherConfig->expects(self::once())
152 ->method(
'getPublisher')
154 ->willReturn($publisher);
155 $this->amqpConfig->expects(self::once())
157 ->with(AmqpConfig::HOST)
159 $this->exchangeRepository->expects(self::once())
160 ->method(
'getByConnectionName')
162 ->willReturn($exchange);
163 self::assertNull($this->publisher->publish($topicName,
$data));