Files
piratepoet/mailpoet/lib/Automation/Engine/Validation/WorkflowValidator.php
2022-09-23 12:42:03 +03:00

37 lines
1.2 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Automation\Engine\Validation;
use MailPoet\Automation\Engine\Data\Workflow;
use MailPoet\Automation\Engine\Validation\WorkflowGraph\WorkflowWalker;
use MailPoet\Automation\Engine\Validation\WorkflowRules\ConsistentStepMapRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoCycleRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoDuplicateEdgesRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoJoinRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoSplitRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoUnreachableStepsRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\TriggersUnderRootRule;
class WorkflowValidator {
/** @var WorkflowWalker */
private $workflowWalker;
public function __construct(
WorkflowWalker $workflowWalker
) {
$this->workflowWalker = $workflowWalker;
}
public function validate(Workflow $workflow): void {
$this->workflowWalker->walk($workflow, [
new NoUnreachableStepsRule(),
new ConsistentStepMapRule(),
new NoDuplicateEdgesRule(),
new TriggersUnderRootRule(),
new NoCycleRule(),
new NoJoinRule(),
new NoSplitRule(),
]);
}
}