public function addAction()
 {
     $tipo = $this->_getParam('tipo', 'Monetario');
     $tarefa_id = (int) $this->_getParam('tarefa', 0);
     if (!$tarefa_id) {
         $dql = "SELECT t FROM Application\\Entity\\Tarefa t";
         $query = $this->_em->createQuery($dql);
         $tarefas = $query->getResult();
     } else {
         $tarefas[] = $this->_em->find('Application\\Entity\\Tarefa', $tarefa_id);
     }
     $formName = 'Form_Requisito_' . $tipo;
     $form = new $formName($tarefas);
     $this->view->form = $form;
     if ($this->getRequest()->isPost()) {
         $formData = $this->getRequest()->getPost();
         if ($form->isValid($formData)) {
             $tarefa = $this->_em->find('Application\\Entity\\Tarefa', $tarefa_id);
             $config = $form->getValues();
             $config['em'] = $this->_em;
             $builderRequisito = new Service\Builder\Requisito();
             $requisito = $builderRequisito->create($tarefa, $form->getValue('tipo'), $config);
             $this->_em->persist($requisito);
             $this->_em->flush();
             $this->_helper->FlashMessenger(array('success' => 'Requisito incluído com sucesso'));
             return $this->_helper->redirector('edit', 'tarefas', 'admin', array('id' => $tarefa_id));
         } else {
             $form->populate($formData);
         }
     }
 }
 public function testCreateTarefa()
 {
     $tarefa = \Mockery::mock('\\Application\\Entity\\Tarefa', array('getId' => 1, 'getNome' => 'Descrição da Tarefa1'));
     $tarefaRequisito = \Mockery::mock('\\Application\\Entity\\Tarefa', array('getId' => 2, 'getNome' => 'Descrição da Tarefa2'));
     $em = \Mockery::mock('\\Doctrine\\ORM\\EntityManager', array('find' => $tarefaRequisito));
     $builderRequisito = new Builder\Requisito();
     $requisito = $builderRequisito->create($tarefa, 'Tarefa', array('tarefa_req' => 2, 'em' => $em));
     $this->assertInstanceOf('Application\\Entity\\RequisitoTarefa', $requisito);
     $this->assertEquals($tarefaRequisito, $requisito->getTarefaRequisito());
     $this->assertEquals($tarefa, $requisito->getTarefa());
 }