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()); } }
/** * @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()); }