/**
  * @param RequestObject $requestObject
  * @param array         $collectorParameters
  */
 public function dispatch(RequestObject $requestObject, array $collectorParameters)
 {
     if (true === $collectorParameters['logger']['enabled']) {
         $this->loggerCollector->collect($requestObject, ['logFile' => $collectorParameters['logger']['file']]);
     }
     if (true === $collectorParameters['persister']['enabled']) {
         $this->persisterCollector->collect($requestObject);
     }
     if (true === $collectorParameters['mailer']['enabled']) {
         $this->mailerCollector->collect($requestObject, ['email' => $collectorParameters['mailer']['email']]);
     }
 }
 /**
  * @test
  * @dataProvider dispatcherDataProvider
  *
  * @param array $configuration
  */
 public function itShouldDipatch($configuration)
 {
     $dispatcher = new DispatcherCollector();
     $requestObject = new RequestObject();
     $dispatcher->setLoggerCollector($this->logger->reveal());
     $dispatcher->setPersisterCollector($this->persister->reveal());
     $dispatcher->setMailerCollector($this->mailer->reveal());
     if ($configuration['logger']['enabled']) {
         $this->logger->collect(Argument::type(RequestObject::class), Argument::type('array'))->shouldBeCalled();
     } else {
         $this->logger->collect(Argument::type(RequestObject::class), Argument::type('array'))->shouldNotBeCalled();
     }
     if ($configuration['persister']['enabled']) {
         $this->persister->collect(Argument::type(RequestObject::class))->shouldBeCalled();
     } else {
         $this->persister->collect(Argument::type(RequestObject::class))->shouldNotBeCalled();
     }
     if ($configuration['mailer']['enabled']) {
         $this->mailer->collect(Argument::type(RequestObject::class), Argument::type('array'))->shouldBeCalled();
     } else {
         $this->mailer->collect(Argument::type(RequestObject::class), Argument::type('array'))->shouldNotBeCalled();
     }
     $dispatcher->dispatch($requestObject, $configuration);
 }
 /**
  * @test
  * @expectedException Symfony\Component\OptionsResolver\Exception\MissingOptionsException
  */
 public function itShouldThrowAnException()
 {
     $this->collector->collect($this->requestObject, []);
 }