/**
* @test
*/
public function it_adds_message_producer_as_event_listener_on_dispatch_initialize()
{
$messageProducer = $this->prophesize(MessageProducer::class);
$eventBus = $this->prophesize(EventBus::class);
$actionEvent = $this->prophesize(ActionEvent::class);
$actionEventEmitter = $this->prophesize(ActionEventEmitter::class);
$listenerHandler = $this->prophesize(ListenerHandler::class);
$messageProducerPlugin = new MessageProducerPlugin($messageProducer->reveal());
$actionEventEmitter->attachListener(MessageBus::EVENT_INITIALIZE, [$messageProducerPlugin, 'onDispatchInitialize'])->willReturn($listenerHandler->reveal())->shouldBeCalled();
$messageProducerPlugin->attach($actionEventEmitter->reveal());
$actionEvent->getTarget()->willReturn($eventBus->reveal());
$eventListeners = ['i_am_an_event_listener'];
$actionEvent->getParam(EventBus::EVENT_PARAM_EVENT_LISTENERS, [])->willReturn($eventListeners);
//Message Producer should be added to list of event listeners
$eventListeners[] = $messageProducer->reveal();
$actionEvent->setParam(EventBus::EVENT_PARAM_EVENT_LISTENERS, $eventListeners)->shouldBeCalled();
$messageProducerPlugin->onDispatchInitialize($actionEvent->reveal());
}