Files
piratepoet/mailpoet/lib/Automation/Engine/Validation/AutomationValidator.php
Jan Jakes 9d55d3f134 Use "automation" instead of "workflow"
[MAILPOET-4793]
2022-11-14 12:14:35 +02:00

72 lines
2.7 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Automation\Engine\Validation;
use MailPoet\Automation\Engine\Data\Automation;
use MailPoet\Automation\Engine\Validation\AutomationGraph\AutomationWalker;
use MailPoet\Automation\Engine\Validation\AutomationRules\AtLeastOneTriggerRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\ConsistentStepMapRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\NoCycleRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\NoDuplicateEdgesRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\NoJoinRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\NoSplitRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\NoUnreachableStepsRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\TriggerNeedsToBeFollowedByActionRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\TriggersUnderRootRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\UnknownStepRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\ValidStepArgsRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\ValidStepOrderRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\ValidStepRule;
use MailPoet\Automation\Engine\Validation\AutomationRules\ValidStepValidationRule;
class AutomationValidator {
/** @var AutomationWalker */
private $automationWalker;
/** @var ValidStepArgsRule */
private $validStepArgsRule;
/** @var ValidStepOrderRule */
private $validStepOrderRule;
/** @var ValidStepValidationRule */
private $validStepValidationRule;
/** @var UnknownStepRule */
private $unknownStepRule;
public function __construct(
UnknownStepRule $unknownStepRule,
ValidStepArgsRule $validStepArgsRule,
ValidStepOrderRule $validStepOrderRule,
ValidStepValidationRule $validStepValidationRule,
AutomationWalker $automationWalker
) {
$this->unknownStepRule = $unknownStepRule;
$this->validStepArgsRule = $validStepArgsRule;
$this->validStepOrderRule = $validStepOrderRule;
$this->validStepValidationRule = $validStepValidationRule;
$this->automationWalker = $automationWalker;
}
public function validate(Automation $automation): void {
$this->automationWalker->walk($automation, [
new NoUnreachableStepsRule(),
new ConsistentStepMapRule(),
new NoDuplicateEdgesRule(),
new TriggersUnderRootRule(),
new NoCycleRule(),
new NoJoinRule(),
new NoSplitRule(),
$this->unknownStepRule,
new AtLeastOneTriggerRule(),
new TriggerNeedsToBeFollowedByActionRule(),
new ValidStepRule([
$this->validStepArgsRule,
$this->validStepOrderRule,
$this->validStepValidationRule,
]),
]);
}
}