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