/** * @param Workflow $workflow * @param TriggerForWorkflowForm $trigger * @param RedBeanModel $model * @param string $attribute * @return bool * @throws NotSupportedException */ protected static function resolveIsTrueByEvaluationRules(Workflow $workflow, TriggerForWorkflowForm $trigger, RedBeanModel $model, $attribute) { assert('is_string($attribute)'); $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); if ($trigger instanceof TimeTriggerForWorkflowForm) { return $triggerRules->evaluateTimeTriggerBeforeSave($model, $attribute, $workflow->doesTimeTriggerRequireChangeToProcess()); } else { return $triggerRules->evaluateBeforeSave($model, $attribute); } }
public function testCreateTriggerRulesByTrigger() { $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'string'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof TextTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'phone'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof TextTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'textArea'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof TextTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'url'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof TextTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'primaryEmail___emailAddress'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof TextTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'boolean'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof CheckBoxTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'dropDown'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof DropDownTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'radioDropDown'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof DropDownTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'multiDropDown'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof MultiSelectDropDownTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'tagCloud'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof MultiSelectDropDownTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'integer'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof IntegerTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'float'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof DecimalTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'currencyValue'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof CurrencyValueTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'likeContactState'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof ContactStateTriggerRules); $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'user'; $triggerRules = TriggerRulesFactory::createTriggerRulesByTrigger($trigger); $this->assertTrue($triggerRules instanceof UserTriggerRules); }