コード例 #1
0
 /**
  * @dataProvider configurationDataProvider
  * @param array $configuration
  * @param array $transitionDefinition
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function testAssemble(array $configuration, array $transitionDefinition)
 {
     $steps = array('step' => $this->createStep());
     $attributes = array('attribute' => $this->createAttribute());
     $expectedCondition = null;
     $expectedAction = null;
     $conditionFactoryCallCount = 0;
     if (array_key_exists('pre_conditions', $transitionDefinition)) {
         $conditionFactoryCallCount++;
     }
     if (array_key_exists('conditions', $transitionDefinition)) {
         $conditionFactoryCallCount++;
     }
     if ($conditionFactoryCallCount) {
         $expectedCondition = $this->createCondition();
         $this->conditionFactory->expects($this->exactly($conditionFactoryCallCount))->method('create')->with(ConfigurableCondition::ALIAS, $transitionDefinition['conditions'])->will($this->returnValue($expectedCondition));
     }
     $actionFactoryCallCount = 0;
     if (array_key_exists('post_actions', $transitionDefinition)) {
         $actionFactoryCallCount++;
     }
     if (array_key_exists('init_actions', $transitionDefinition)) {
         $actionFactoryCallCount++;
     }
     if ($actionFactoryCallCount) {
         $expectedAction = $this->createAction();
         $this->actionFactory->expects($this->exactly($actionFactoryCallCount))->method('create')->with(ConfigurableAction::ALIAS, $transitionDefinition['post_actions'])->will($this->returnValue($this->createAction()));
     }
     $this->formOptionsAssembler->expects($this->once())->method('assemble')->with(isset($configuration['form_options']) ? $configuration['form_options'] : array(), $attributes, 'transition', 'test')->will($this->returnArgument(0));
     $transitions = $this->assembler->assemble(array('test' => $configuration), $this->transitionDefinitions, $steps, $attributes);
     $configuration = array_merge(array('is_start' => false, 'form_type' => WorkflowTransitionType::NAME, 'form_options' => array(), 'frontend_options' => array()), $configuration);
     $this->assertInstanceOf('Doctrine\\Common\\Collections\\ArrayCollection', $transitions);
     $this->assertCount(1, $transitions);
     $this->assertTrue($transitions->containsKey('test'));
     /** @var Transition $actualTransition */
     $actualTransition = $transitions->get('test');
     $this->assertEquals('test', $actualTransition->getName());
     $this->assertEquals($steps['step'], $actualTransition->getStepTo());
     $this->assertEquals($configuration['label'], $actualTransition->getLabel());
     $this->assertEquals($configuration['frontend_options'], $actualTransition->getFrontendOptions());
     $this->assertEquals($configuration['is_start'], $actualTransition->isStart());
     $this->assertEquals($configuration['form_type'], $actualTransition->getFormType());
     $this->assertEquals($configuration['form_options'], $actualTransition->getFormOptions());
     $this->assertEquals($expectedCondition, $actualTransition->getCondition());
     $this->assertEquals($expectedAction, $actualTransition->getPostAction());
 }
コード例 #2
0
 /**
  * @dataProvider configurationDataProvider
  * @param array $configuration
  * @param array $transitionDefinition
  * @SuppressWarnings(PHPMD.NPathComplexity)
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testAssemble(array $configuration, array $transitionDefinition)
 {
     $steps = array('step' => $this->createStep());
     $attributes = array('attribute' => $this->createAttribute());
     $expectedCondition = null;
     $expectedPreCondition = $this->createCondition();
     $expectedAction = null;
     $defaultAclPrecondition = array();
     $preConditions = array();
     if (isset($configuration['acl_resource'])) {
         $defaultAclPrecondition = array('@acl_granted' => array('parameters' => array($configuration['acl_resource'])));
         if (isset($configuration['acl_message'])) {
             $defaultAclPrecondition['@acl_granted']['message'] = $configuration['acl_message'];
         }
     }
     if (isset($transitionDefinition['pre_conditions']) && $defaultAclPrecondition) {
         $preConditions = array('@and' => array($defaultAclPrecondition, $transitionDefinition['pre_conditions']));
     } elseif (isset($transitionDefinition['pre_conditions'])) {
         $preConditions = $transitionDefinition['pre_conditions'];
     }
     $count = 0;
     if ($preConditions) {
         $this->conditionFactory->expects($this->at($count))->method('create')->with(ConfigurableCondition::ALIAS, $preConditions)->will($this->returnValue($expectedPreCondition));
         $count++;
     }
     if (array_key_exists('conditions', $transitionDefinition)) {
         $expectedCondition = $this->createCondition();
         $this->conditionFactory->expects($this->at($count))->method('create')->with(ConfigurableCondition::ALIAS, $transitionDefinition['conditions'])->will($this->returnValue($expectedCondition));
     }
     $actionFactoryCallCount = 0;
     if (array_key_exists('post_actions', $transitionDefinition)) {
         $actionFactoryCallCount++;
     }
     if (array_key_exists('init_actions', $transitionDefinition)) {
         $actionFactoryCallCount++;
     }
     if ($actionFactoryCallCount) {
         $expectedAction = $this->createAction();
         $this->actionFactory->expects($this->exactly($actionFactoryCallCount))->method('create')->with(ConfigurableAction::ALIAS, $transitionDefinition['post_actions'])->will($this->returnValue($this->createAction()));
     }
     $this->formOptionsAssembler->expects($this->once())->method('assemble')->with(isset($configuration['form_options']) ? $configuration['form_options'] : array(), $attributes, 'transition', 'test')->will($this->returnArgument(0));
     $transitions = $this->assembler->assemble(array('test' => $configuration), $this->transitionDefinitions, $steps, $attributes);
     $configuration = array_merge(array('is_start' => false, 'form_type' => WorkflowTransitionType::NAME, 'form_options' => array(), 'frontend_options' => array()), $configuration);
     $this->assertInstanceOf('Doctrine\\Common\\Collections\\ArrayCollection', $transitions);
     $this->assertCount(1, $transitions);
     $this->assertTrue($transitions->containsKey('test'));
     /** @var Transition $actualTransition */
     $actualTransition = $transitions->get('test');
     $this->assertEquals('test', $actualTransition->getName(), 'Incorrect name');
     $this->assertEquals($steps['step'], $actualTransition->getStepTo(), 'Incorrect step_to');
     $this->assertEquals($configuration['label'], $actualTransition->getLabel(), 'Incorrect label');
     $expectedDisplayType = WorkflowConfiguration::DEFAULT_TRANSITION_DISPLAY_TYPE;
     if (isset($configuration['display_type'])) {
         $expectedDisplayType = $configuration['display_type'];
     }
     $this->assertEquals($expectedDisplayType, $actualTransition->getDisplayType(), 'Incorrect display type');
     $this->assertEquals($configuration['frontend_options'], $actualTransition->getFrontendOptions(), 'Incorrect frontend_options');
     $this->assertEquals($configuration['is_start'], $actualTransition->isStart(), 'Incorrect is_start');
     $this->assertEquals($configuration['form_type'], $actualTransition->getFormType(), 'Incorrect form_type');
     $this->assertEquals($configuration['form_options'], $actualTransition->getFormOptions(), 'Incorrect form_options');
     $this->assertTemplate('page', $configuration, $actualTransition);
     $this->assertTemplate('dialog', $configuration, $actualTransition);
     if ($preConditions) {
         $this->assertEquals($expectedPreCondition, $actualTransition->getPreCondition(), 'Incorrect Precondition');
     } else {
         $this->assertNull($actualTransition->getPreCondition(), 'Incorrect Precondition');
     }
     $this->assertEquals($expectedCondition, $actualTransition->getCondition(), 'Incorrect condition');
     $this->assertEquals($expectedAction, $actualTransition->getPostAction(), 'Incorrect post_action');
 }
コード例 #3
0
 /**
  * @param array $configuration
  * @param Collection $steps
  * @param Collection $attributes
  * @return Transition[]|Collection
  */
 protected function assembleTransitions(array $configuration, Collection $steps, Collection $attributes)
 {
     $transitionsConfiguration = $this->getOption($configuration, WorkflowConfiguration::NODE_TRANSITIONS, array());
     $transitionDefinitionsConfiguration = $this->getOption($configuration, WorkflowConfiguration::NODE_TRANSITION_DEFINITIONS, array());
     return $this->transitionAssembler->assemble($transitionsConfiguration, $transitionDefinitionsConfiguration, $steps, $attributes);
 }