From ef97e4d05af6fea5892b2462e34bc7b2a4da09c2 Mon Sep 17 00:00:00 2001 From: Jan Jakes Date: Tue, 5 Sep 2023 12:44:36 +0200 Subject: [PATCH] Add logging for automation triggers [MAILPOET-5568] --- .../Engine/Control/TriggerHandler.php | 11 ++++++ .../Engine/Control/TriggerHandlerTest.php | 36 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/mailpoet/lib/Automation/Engine/Control/TriggerHandler.php b/mailpoet/lib/Automation/Engine/Control/TriggerHandler.php index 5b43853ddd..9ed8bcc900 100644 --- a/mailpoet/lib/Automation/Engine/Control/TriggerHandler.php +++ b/mailpoet/lib/Automation/Engine/Control/TriggerHandler.php @@ -3,6 +3,7 @@ namespace MailPoet\Automation\Engine\Control; use MailPoet\Automation\Engine\Data\AutomationRun; +use MailPoet\Automation\Engine\Data\AutomationRunLog; use MailPoet\Automation\Engine\Data\StepRunArgs; use MailPoet\Automation\Engine\Data\Subject; use MailPoet\Automation\Engine\Exceptions; @@ -31,6 +32,9 @@ class TriggerHandler { /** @var StepScheduler */ private $stepScheduler; + /** @var StepRunLoggerFactory */ + private $stepRunLoggerFactory; + /** @var WordPress */ private $wordPress; @@ -41,6 +45,7 @@ class TriggerHandler { SubjectTransformerHandler $subjectTransformerHandler, FilterHandler $filterHandler, StepScheduler $stepScheduler, + StepRunLoggerFactory $stepRunLoggerFactory, WordPress $wordPress ) { $this->automationStorage = $automationStorage; @@ -49,6 +54,7 @@ class TriggerHandler { $this->subjectTransformerHandler = $subjectTransformerHandler; $this->filterHandler = $filterHandler; $this->stepScheduler = $stepScheduler; + $this->stepRunLoggerFactory = $stepRunLoggerFactory; $this->wordPress = $wordPress; } @@ -90,9 +96,14 @@ class TriggerHandler { continue; } + $automationRunId = $this->automationRunStorage->createAutomationRun($automationRun); $automationRun->setId($automationRunId); $this->stepScheduler->scheduleNextStep($stepRunArgs); + + $logger = $this->stepRunLoggerFactory->createLogger($automationRunId, $step->getId(), AutomationRunLog::TYPE_TRIGGER); + $logger->logStepData($step); + $logger->logSuccess(); } } } diff --git a/mailpoet/tests/integration/Automation/Engine/Control/TriggerHandlerTest.php b/mailpoet/tests/integration/Automation/Engine/Control/TriggerHandlerTest.php index e12a395e53..7f5da35678 100644 --- a/mailpoet/tests/integration/Automation/Engine/Control/TriggerHandlerTest.php +++ b/mailpoet/tests/integration/Automation/Engine/Control/TriggerHandlerTest.php @@ -9,6 +9,7 @@ use MailPoet\Automation\Engine\Data\FilterGroup; use MailPoet\Automation\Engine\Data\Filters; use MailPoet\Automation\Engine\Data\Step; use MailPoet\Automation\Engine\Data\Subject; +use MailPoet\Automation\Engine\Storage\AutomationRunLogStorage; use MailPoet\Automation\Engine\Storage\AutomationRunStorage; use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject; use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject; @@ -28,6 +29,9 @@ class TriggerHandlerTest extends \MailPoetTest { /** @var AutomationRunStorage */ private $automationRunStorage; + /** @var AutomationRunLogStorage */ + private $automationRunLogStorage; + /** @var SegmentsRepository */ private $segmentRepository; @@ -37,6 +41,7 @@ class TriggerHandlerTest extends \MailPoetTest { public function _before() { $this->testee = $this->diContainer->get(TriggerHandler::class); $this->automationRunStorage = $this->diContainer->get(AutomationRunStorage::class); + $this->automationRunLogStorage = $this->diContainer->get(AutomationRunLogStorage::class); $this->segmentRepository = $this->diContainer->get(SegmentsRepository::class); $this->segments = [ @@ -196,4 +201,35 @@ class TriggerHandlerTest extends \MailPoetTest { $this->testee->processTrigger($trigger, [$segmentSubject, $subscriberSubject]); $this->assertCount(1, $this->automationRunStorage->getAutomationRunsForAutomation($automation)); } + + public function testItLogs(): void { + $trigger = $this->diContainer->get(SomeoneSubscribesTrigger::class); + $automation1 = $this->tester->createAutomation('Test 1', new Step('trigger-1', Step::TYPE_TRIGGER, $trigger->getKey(), [], [])); + $automation2 = $this->tester->createAutomation('Test 2', new Step('trigger-2', Step::TYPE_TRIGGER, $trigger->getKey(), [], [])); + + $segmentSubject = new Subject(SegmentSubject::KEY, ['segment_id' => $this->segments['segment_1']->getId()]); + $this->testee->processTrigger($trigger, [$segmentSubject]); + + $runs1 = $this->automationRunStorage->getAutomationRunsForAutomation($automation1); + $this->assertCount(1, $runs1); + + $logs1 = $this->automationRunLogStorage->getLogsForAutomationRun($runs1[0]->getId()); + $this->assertCount(1, $logs1); + $this->assertSame($runs1[0]->getId(), $logs1[0]->getAutomationRunId()); + $this->assertSame('trigger-1', $logs1[0]->getStepId()); + $this->assertSame($trigger->getKey(), $logs1[0]->getStepKey()); + $this->assertSame('complete', $logs1[0]->getStatus()); + $this->assertSame(1, $logs1[0]->getRunNumber()); + + $runs2 = $this->automationRunStorage->getAutomationRunsForAutomation($automation2); + $this->assertCount(1, $runs2); + + $logs2 = $this->automationRunLogStorage->getLogsForAutomationRun($runs2[0]->getId()); + $this->assertCount(1, $logs2); + $this->assertSame($runs2[0]->getId(), $logs2[0]->getAutomationRunId()); + $this->assertSame('trigger-2', $logs2[0]->getStepId()); + $this->assertSame($trigger->getKey(), $logs2[0]->getStepKey()); + $this->assertSame('complete', $logs2[0]->getStatus()); + $this->assertSame(1, $logs2[0]->getRunNumber()); + } }