/**
  * @param \Phpro\AnnotatedForms\Event\FormEvent $event
  * @param \Zend\Form\Form $form
  * @param \Zend\Form\Element\Collection $collection
  * @param \Zend\Form\InputFilterProviderFieldset $fieldset
  * @param \Zend\InputFilter\InputFilter $inputFilter
  */
 public function it_should_configure_collection_input_providers($event, $form, $collection, $fieldset, $inputFilter)
 {
     $event->getTarget()->willReturn($form);
     $form->getFieldsets()->willReturn(array($collection));
     $form->getInputFilter()->willReturn($inputFilter);
     $collection->getName()->willReturn('collection');
     $collection->getTargetElement()->willReturn($fieldset);
     $collection->getFieldsets()->willReturn(array($fieldset));
     $fieldset->getFieldsets()->willReturn(array());
     $fieldset->getInputFilterSpecification()->willReturn(array('name' => array('required' => true)));
     $this->configureCollectionInputFilter($event);
     $inputFilter->remove('collection')->shouldHaveBeenCalled();
     $inputFilter->add(Argument::type('Zend\\InputFilter\\CollectionInputFilter'), 'collection')->shouldHaveBeenCalled();
 }
 /**
  * @param Collection $collection
  */
 protected function configureInputFilter(Collection $collection)
 {
     // Make it a collection input filter
     $inputFilter = new CollectionInputFilter();
     $inputFilter->setIsRequired(false);
     // Add the input filter of the target document as the real input filter:
     $targetElement = $collection->getTargetElement();
     if ($targetElement instanceof InputFilterProviderInterface) {
         $configuredFilter = $targetElement->getInputFilterSpecification();
         $inputFilter->setInputFilter($configuredFilter);
     }
     // Replace the current input filter in the actual form:
     $collectionName = $collection->getName();
     $formFilter = $this->form->getInputFilter();
     $formFilter->remove($collectionName);
     $formFilter->add($inputFilter, $collectionName);
 }