public function testIsTransitionAvailable() { $workflowName = 'test_workflow'; $workflowItem = new WorkflowItem(); $workflowItem->setWorkflowName($workflowName); $errors = new ArrayCollection(); $transition = new Transition(); $transition->setName('test_transition'); $workflow = $this->createWorkflow($workflowName); $workflow->expects($this->once())->method('isTransitionAvailable')->with($workflowItem, $transition, $errors)->will($this->returnValue(true)); $this->workflowRegistry->expects($this->once())->method('getWorkflow')->with($workflowName)->will($this->returnValue($workflow)); $this->assertTrue($this->workflowManager->isTransitionAvailable($workflowItem, $transition, $errors)); }
/** * @param WorkflowItem $workflowItem * @param Transition $transition * @return WorkflowTransitionRecord * @throws WorkflowException */ protected function createTransitionRecord(WorkflowItem $workflowItem, Transition $transition) { $transitionName = $transition->getName(); $stepFrom = $workflowItem->getCurrentStep(); $stepName = $transition->getStepTo()->getName(); $stepTo = $this->getDefinition()->getStepByName($stepName); if (!$stepTo) { throw new WorkflowException(sprintf('Workflow "%s" does not have step entity "%s"', $this->getName(), $stepName)); } $transitionRecord = new WorkflowTransitionRecord(); $transitionRecord->setTransitionName($transitionName)->setStepFrom($stepFrom)->setStepTo($stepTo); return $transitionRecord; }
public function testGetAllowedTransitions() { $firstTransition = new Transition(); $firstTransition->setName('first_transition'); $secondTransition = new Transition(); $secondTransition->setName('second_transition'); $step = new Step(); $step->setName('test_step'); $step->setAllowedTransitions(array($secondTransition->getName())); $workflow = $this->createWorkflow(); $workflow->getStepManager()->setSteps(array($step)); $workflow->getTransitionManager()->setTransitions(array($firstTransition, $secondTransition)); $workflowItem = new WorkflowItem(); $workflowItem->setCurrentStepName($step->getName()); $actualTransitions = $workflow->getTransitionsByWorkflowItem($workflowItem); $this->assertEquals(array($secondTransition), $actualTransitions->getValues()); }
/** * Get transition form. * * @param WorkflowItem $workflowItem * @param Transition $transition * @return Form */ protected function getTransitionForm(WorkflowItem $workflowItem, Transition $transition) { return $this->createForm($transition->getFormType(), $workflowItem->getData(), array_merge($transition->getFormOptions(), array('workflow_item' => $workflowItem, 'transition_name' => $transition->getName()))); }
public function testHasForm() { $obj = new Transition(); $this->assertFalse($obj->hasForm()); // by default transition has form $obj->setFormOptions(array('key' => 'value')); $this->assertFalse($obj->hasForm()); $obj->setFormOptions(array('attribute_fields' => array())); $this->assertFalse($obj->hasForm()); $obj->setFormOptions(array('attribute_fields' => array('key' => 'value'))); $this->assertTrue($obj->hasForm()); }
/** * @param string $name * @param array $options * @param array $definition * @param Step[]|ArrayCollection $steps * @param Attribute[]|Collection $attributes * @return Transition * @throws AssemblerException */ protected function assembleTransition($name, array $options, array $definition, $steps, $attributes) { $this->assertOptions($options, array('step_to', 'label')); $stepToName = $options['step_to']; if (empty($steps[$stepToName])) { throw new AssemblerException(sprintf('Step "%s" not found', $stepToName)); } $transition = new Transition(); $transition->setName($name)->setLabel($options['label'])->setStepTo($steps[$stepToName])->setMessage($this->getOption($options, 'message'))->setStart($this->getOption($options, 'is_start', false))->setHidden($this->getOption($options, 'is_hidden', false))->setUnavailableHidden($this->getOption($options, 'is_unavailable_hidden', false))->setFormType($this->getOption($options, 'form_type', WorkflowTransitionType::NAME))->setFormOptions($this->assembleFormOptions($options, $attributes, $name))->setFrontendOptions($this->getOption($options, 'frontend_options', array()))->setDisplayType($this->getOption($options, 'display_type', WorkflowConfiguration::DEFAULT_TRANSITION_DISPLAY_TYPE))->setPageTemplate($this->getOption($options, 'page_template'))->setDialogTemplate($this->getOption($options, 'dialog_template')); $definition['pre_conditions'] = $this->addAclPreConditions($options, $definition); if (!empty($definition['pre_conditions'])) { $condition = $this->conditionFactory->create(ConfigurableCondition::ALIAS, $definition['pre_conditions']); $transition->setPreCondition($condition); } if (!empty($definition['conditions'])) { $condition = $this->conditionFactory->create(ConfigurableCondition::ALIAS, $definition['conditions']); $transition->setCondition($condition); } if (!empty($definition['post_actions'])) { $postAction = $this->actionFactory->create(ConfigurableAction::ALIAS, $definition['post_actions']); $transition->setPostAction($postAction); } return $transition; }
/** * @param WorkflowItem $workflowItem * @param Transition $transition * @return WorkflowTransitionRecord */ protected function createTransitionRecord(WorkflowItem $workflowItem, Transition $transition) { $transitionName = $transition->getName(); $stepFrom = $workflowItem->getCurrentStepName(); $stepTo = $transition->getStepTo()->getName(); $transitionRecord = new WorkflowTransitionRecord(); $transitionRecord->setTransitionName($transitionName)->setStepFromName($stepFrom)->setStepToName($stepTo); return $transitionRecord; }