Exemplo n.º 1
0
 /**
  * @param boolean $withStartStep
  * @dataProvider resetWorkflowItemProvider
  */
 public function testResetWorkflowItem($withStartStep)
 {
     $workflowName = self::TEST_WORKFLOW_NAME;
     $activeWorkflowName = self::TEST_WORKFLOW_NAME . '_active';
     $workflowItem = $this->createWorkflowItem();
     $entity = new WorkflowAwareEntity();
     $workflowStep = new WorkflowStep();
     $entity->setWorkflowItem($workflowItem);
     $entity->setWorkflowStep($workflowStep);
     $workflowItem->setEntity($entity);
     $workflowDefinition = new WorkflowDefinition();
     $workflowDefinition->setRelatedEntity(get_class($entity));
     $workflowItem->setDefinition($workflowDefinition);
     $aclManager = $this->getMockBuilder('Oro\\Bundle\\WorkflowBundle\\Acl\\AclManager')->disableOriginalConstructor()->getMock();
     $workflow = $this->getMockBuilder('Oro\\Bundle\\WorkflowBundle\\Model\\Workflow')->setConstructorArgs(array(new EntityConnector(), $aclManager, null, null, null))->setMethods(null)->getMock();
     $workflow->setName($workflowName);
     $stepManager = $this->getMock('Oro\\Bundle\\WorkflowBundle\\Model\\StepManager');
     $stepManager->expects($this->any())->method('hasStartStep')->will($this->returnValue($withStartStep));
     $activeWorkflow = $this->getMockBuilder('Oro\\Bundle\\WorkflowBundle\\Model\\Workflow')->setConstructorArgs(array(new EntityConnector(), $aclManager, $stepManager, null, null))->setMethods(array('start'))->getMock();
     $activeWorkflow->setName($activeWorkflowName);
     $activeWorkflow->setDefinition($workflowDefinition);
     if ($withStartStep) {
         $workflowDefinition->setName($activeWorkflowName);
         $workflowItemActive = $this->createWorkflowItem($activeWorkflowName);
         $workflowItemActive->setEntity($entity);
         $workflowItemActive->setDefinition($workflowDefinition);
         $activeWorkflow->expects($this->once())->method('start')->with($entity, array(), null)->will($this->returnValue($workflowItemActive));
     } else {
         $activeWorkflow->expects($this->never())->method('start');
     }
     $this->workflowRegistry->expects($this->any())->method('getWorkflow')->will($this->returnCallback(function ($workflowIdentifier) use($workflow, $activeWorkflow) {
         return is_string($workflowIdentifier) ? $activeWorkflow : $workflow;
     }));
     $this->workflowRegistry->expects($this->once())->method('getActiveWorkflowByEntityClass')->will($this->returnValue($activeWorkflow));
     $entityManager = $this->createEntityManager();
     $this->registry->expects($this->once())->method('getManagerForClass')->will($this->returnValue($entityManager));
     if ($withStartStep) {
         $this->registry->expects($this->once())->method('getManager')->will($this->returnValue($entityManager));
     } else {
         $this->registry->expects($this->never())->method('getManager');
     }
     $activeWorkflowItem = $this->workflowManager->resetWorkflowItem($workflowItem);
     if ($withStartStep) {
         $this->assertNotNull($activeWorkflowItem);
         $this->assertEquals($activeWorkflowName, $activeWorkflowItem->getDefinition()->getName());
     } else {
         $this->assertNull($activeWorkflowItem);
     }
     $this->assertNull($entity->getWorkflowStep());
     $this->assertNull($entity->getWorkflowItem());
 }