public function load(ObjectManager $manager)
 {
     for ($i = 1; $i <= self::COUNT; $i++) {
         $entity = new WorkflowAwareEntity();
         $entity->setName('entity_' . $i);
         $manager->persist($entity);
     }
     $manager->flush();
 }
 protected function generateEntities(ObjectManager $manager, WorkflowDefinition $definition)
 {
     // load entities
     /** @var WorkflowAwareEntity[] $entities */
     $entities = array();
     for ($i = 1; $i <= self::COUNT; $i++) {
         $entity = new WorkflowAwareEntity();
         $entity->setName($definition->getName() . '_entity_' . $i);
         $entities[] = $entity;
         $manager->persist($entity);
     }
     $manager->flush();
     // create workflow item manually (to make it faster)
     foreach ($entities as $entity) {
         $workflowItem = new WorkflowItem();
         $workflowItem->setDefinition($definition)->setWorkflowName($definition->getName())->setEntity($entity)->setEntityId($entity->getId())->setCurrentStep($definition->getSteps()->first());
         $manager->persist($workflowItem);
         $entity->setWorkflowItem($workflowItem)->setWorkflowStep($workflowItem->getCurrentStep());
     }
     $manager->flush();
 }
 /**
  * @param WorkflowAwareEntity $entity
  * @param string|null $workflowName
  */
 protected function assertEntityWorkflowItem(WorkflowAwareEntity $entity, $workflowName)
 {
     if ($workflowName) {
         $this->assertNotEmpty($entity->getWorkflowItem());
         $this->assertEquals($workflowName, $entity->getWorkflowItem()->getWorkflowName());
     } else {
         $this->assertEmpty($entity->getWorkflowItem());
     }
 }
示例#4
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());
 }