/** * @test */ public function it_can_publish_the_message_on_the_event_bus() { $context = []; $context['correlation_id'] = 'my-correlation-id-123'; $expectedMetadata = new Metadata($context); $expectedPayload = ''; $this->eventBus->expects($this->once())->method('publish')->with($this->callback(function ($domainEventStream) use($expectedMetadata, $expectedPayload) { /** @var DomainEventStream $domainEventStream */ $iterator = $domainEventStream->getIterator(); $domainMessage = $iterator->offsetGet(0); $actualMetadata = $domainMessage->getMetadata(); $actualPayload = $domainMessage->getPayload(); if ($actualMetadata == $expectedMetadata && $actualPayload == $expectedPayload) { return true; } else { return false; } })); $this->deserializerLocator->expects($this->once())->method('getDeserializerForContentType')->with(new StringLiteral('application/vnd.cultuurnet.udb3-events.dummy-event+json'))->willReturn($this->deserializer); $this->deserializer->expects($this->once())->method('deserialize')->with(new StringLiteral(''))->willReturn(''); $this->channel->expects($this->once())->method('basic_ack')->with('my-delivery-tag'); $messageProperties = ['content_type' => 'application/vnd.cultuurnet.udb3-events.dummy-event+json', 'correlation_id' => 'my-correlation-id-123']; $messageBody = ''; $message = new AMQPMessage($messageBody, $messageProperties); $message->delivery_info['channel'] = $this->channel; $message->delivery_info['delivery_tag'] = 'my-delivery-tag'; $this->eventBusForwardingConsumer->consume($message); }