Prooph\ServiceBus\Plugin\MessageProducerPlugin::attach PHP Method

attach() public method

public attach ( Prooph\Common\Event\ActionEventEmitter $emitter )
$emitter Prooph\Common\Event\ActionEventEmitter
    public function attach(ActionEventEmitter $emitter)
    {
        $this->trackHandler($emitter->attachListener(MessageBus::EVENT_INITIALIZE, [$this, 'onDispatchInitialize']));
    }

Usage Example

 /**
  * @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());
 }