function it_converts_to_array(ErrorCollection $errorCollection)
 {
     $errors = array(array(static::MESSAGE, static::$params, null), array(static::MESSAGE, static::$params, $errorCollection));
     $errorCollection->toArray()->shouldBeCalled()->willReturn(array(array(static::MESSAGE, static::$params, null)));
     $this->addErrors($errors)->shouldReturn($this);
     $this->toArray()->shouldReturn(array(array(static::MESSAGE, static::$params, null), array(static::MESSAGE, static::$params, array(array(static::MESSAGE, static::$params, null)))));
 }
 /**
  * {@inheritdoc}
  */
 public function match(Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     $permission = $transition->getPermission();
     if ($this->checkPermission($permission)) {
         return true;
     }
     $errorCollection->addError('transition.condition.transition-permission', array((string) $permission));
     return false;
 }
Example #3
0
 function it_does_not_match_if_one_child_does_not(Condition $conditionA, Condition $conditionB, Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     $conditionA->match($transition, $item, $context, Argument::type(self::ERROR_COLLECTION_CLASS))->willReturn(true);
     $conditionB->match($transition, $item, $context, Argument::type(self::ERROR_COLLECTION_CLASS))->willReturn(false);
     $errorCollection->addError(Argument::cetera())->shouldBeCalled();
     $this->addCondition($conditionA);
     $this->addCondition($conditionB);
     $this->match($transition, $item, $context, $errorCollection)->shouldReturn(false);
 }
 function it_does_not_match_if_step_role_is_not_granted(Transition $transition, Item $item, Context $context, User $user, Permission $permission, ErrorCollection $errorCollection)
 {
     $item->isWorkflowStarted()->willReturn(true);
     $item->getCurrentStepName()->willReturn('step');
     $permission->__toString()->willReturn('workflow/permission');
     $user->hasPermission($permission)->willReturn(false);
     $errorCollection->addError(Argument::cetera())->shouldBeCalled();
     $this->match($transition, $item, $context, $errorCollection)->shouldReturn(false);
 }
Example #5
0
 function it_starts_a_new_workflow_state(EntityId $entityId, State $state, EntityId $entityId, Transition $transition, Workflow $workflow, Step $step, Context $context, ErrorCollection $errorCollection)
 {
     $transition->getWorkflow()->willReturn($workflow);
     $transition->getName()->willReturn('transition_name');
     $transition->getStepTo()->willReturn($step);
     $context->getProperties()->willReturn(array());
     $errorCollection->toArray()->willReturn(array());
     $this->beConstructedThrough('initialize', array($entityId, static::$entity));
     $this->start($transition, $context, $errorCollection, true)->shouldHaveType('Netzmacht\\Workflow\\Flow\\State');
 }
Example #6
0
 /**
  * {@inheritdoc}
  */
 public function match(Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     $errors = new ErrorCollection();
     $success = true;
     foreach ($this->conditions as $condition) {
         if (!$condition->match($transition, $item, $context, $errors)) {
             $success = false;
         }
     }
     if (!$success) {
         $errorCollection->addError('transition.condition.and.failed', array(), $errors);
     }
     return $success;
 }
Example #7
0
 /**
  * {@inheritdoc}
  */
 public function match(Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     if (!$this->conditions) {
         return true;
     }
     $errors = new ErrorCollection();
     foreach ($this->conditions as $condition) {
         if ($condition->match($transition, $item, $context, $errors)) {
             return true;
         }
     }
     $errorCollection->addError('transition.condition.or.failed', array(), $errors);
     return false;
 }
 /**
  * {@inheritdoc}
  */
 public function validate(Form $form)
 {
     // first build the form
     $this->errorCollection->reset();
     $this->buildForm($form);
     $this->validated = false;
     // check pre conditions first
     if ($this->getTransition()->checkPreCondition($this->item, $this->context, $this->errorCollection)) {
         $this->validated = true;
         // validate form input now
         if ($this->isInputRequired()) {
             $this->validated = $this->getForm()->validate();
             if (!$this->validated) {
                 $this->errorCollection->addError('transition.validate.form.failed', array(), $form->getErrorCollection());
             }
         }
         // check conditions after validating the form so that context is setup
         if ($this->validated && !$this->getTransition()->checkCondition($this->item, $this->context, $this->errorCollection)) {
             $this->validated = false;
         }
     }
     // trigger the listener, no matter if validated so far
     $this->validated = $this->listener->onValidate($form, $this->validated, $this->workflow, $this->item, $this->context, $this->getTransition()->getName());
     return $this->validated;
 }
 /**
  * {@inheritdoc}
  */
 public function match(Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     // workflow is not started, so no start step exists
     if (!$item->isWorkflowStarted()) {
         if ($this->allowStartTransition) {
             return true;
         }
         $errorCollection->addError('transition.condition.step.failed.not-started');
         return false;
     }
     $permission = $this->getStepPermission($transition, $item);
     if ($this->checkPermission($permission)) {
         return true;
     }
     $errorCollection->addError('transition.condition.step.failed', array($item->getCurrentStepName(), $permission ? (string) $permission : '-'));
     return false;
 }
 /**
  * {@inheritdoc}
  *
  * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  * @SuppressWarnings(PHPMD.EvalExpression)
  */
 public function match(Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     if (!$this->compiled) {
         return false;
     }
     // Vars are created so that eval can access them.
     $entity = $item->getEntity();
     $entityId = $item->getEntityId();
     // @codingStandardsIgnoreStart
     if (eval($this->compiled)) {
         // @codingStandardsIgnoreEnd
         return true;
     }
     $errorCollection->addError($this->message, array($this->expression));
     return false;
 }
 /**
  * {@inheritdoc}
  */
 public function match(Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     $value = $this->getEntityValue($item->getEntity());
     if (Comparison::compare($value, $this->value, $this->operator)) {
         return true;
     }
     $errorCollection->addError('transition.condition.property.failed', array($this->property, $value, $this->operator, $this->value));
     return false;
 }
 function it_does_not_match_if_transition_has_no_permission(Transition $transition, Item $item, Context $context, ErrorCollection $errorCollection)
 {
     $transition->getPermission()->willReturn(null);
     $errorCollection->addError(Argument::cetera())->shouldBeCalled();
     $this->match($transition, $item, $context, $errorCollection)->shouldReturn(false);
 }
Example #13
0
 /**
  * Transit to a new state.
  *
  * @param Transition      $transition      The transition being performed.
  * @param Context         $context         The transition context.
  * @param ErrorCollection $errorCollection The error collection.
  * @param bool            $success         The success state.
  *
  * @return State
  */
 public function transit(Transition $transition, Context $context, ErrorCollection $errorCollection, $success = true)
 {
     $dateTime = new DateTime();
     $stepName = $success ? $transition->getStepTo()->getName() : $this->stepName;
     return new static($this->entityId, $this->workflowName, $transition->getName(), $stepName, $success, $context->getProperties(), $dateTime, $errorCollection->getErrors());
 }
Example #14
0
 function it_catches_action_failed_exceptions_during_post_action_execution(Item $item, Context $context, ErrorCollection $errorCollection)
 {
     $this->addPostAction(new ThrowingAction());
     $errorCollection->addError(Argument::type('string'), Argument::type('array'))->shouldBeCalled();
     $context->getProperties()->willReturn(array());
     $this->executePostActions($item, $context, $errorCollection);
 }
Example #15
0
 function it_transits_to_next_state(Transition $transition, Context $context, ErrorCollection $errorCollection)
 {
     $context->getProperties()->willReturn(array());
     $errorCollection->getErrors()->willReturn(array());
     $this->transit($transition, $context, $errorCollection, false)->shouldBeAnInstanceOf('Netzmacht\\Workflow\\Flow\\State');
 }