Simplify automation test helpers

[MAILPOET-6131]
This commit is contained in:
Jan Jakes
2024-07-04 10:04:52 +02:00
committed by Aschepikov
parent b7cee657c7
commit 9be6895cf1
9 changed files with 11 additions and 43 deletions

View File

@@ -390,7 +390,7 @@ class IntegrationTester extends \Codeception\Actor {
verify($date1->getTimestamp())->equalsWithDelta($date2->getTimestamp(), $delta); verify($date1->getTimestamp())->equalsWithDelta($date2->getTimestamp(), $delta);
} }
public function createAutomation(string $name, Step ...$steps): ?Automation { public function createAutomation(string $name, Step ...$steps): Automation {
$automationStorage = ContainerWrapper::getInstance()->get(AutomationStorage::class); $automationStorage = ContainerWrapper::getInstance()->get(AutomationStorage::class);
if (!$steps) { if (!$steps) {
@@ -416,10 +416,13 @@ class IntegrationTester extends \Codeception\Actor {
} }
$automation = new Automation($name, $stepsWithIds, wp_get_current_user()); $automation = new Automation($name, $stepsWithIds, wp_get_current_user());
$automation->setStatus(Automation::STATUS_ACTIVE); $automation->setStatus(Automation::STATUS_ACTIVE);
return $automationStorage->getAutomation($automationStorage->createAutomation($automation)); $automation = $automationStorage->getAutomation($automationStorage->createAutomation($automation));
$this->assertInstanceOf(Automation::class, $automation);
/** @var Automation $automation -- PHPStan fails to exclude "null" */
return $automation;
} }
public function createAutomationRun(Automation $automation, $subjects = []): ?AutomationRun { public function createAutomationRun(Automation $automation, $subjects = []): AutomationRun {
$trigger = array_values($automation->getTriggers())[0] ?? null; $trigger = array_values($automation->getTriggers())[0] ?? null;
$triggerKey = $trigger ? $trigger->getKey() : ''; $triggerKey = $trigger ? $trigger->getKey() : '';
$automationRun = new AutomationRun( $automationRun = new AutomationRun(
@@ -429,7 +432,10 @@ class IntegrationTester extends \Codeception\Actor {
$subjects $subjects
); );
$automationRunStorage = ContainerWrapper::getInstance()->get(AutomationRunStorage::class); $automationRunStorage = ContainerWrapper::getInstance()->get(AutomationRunStorage::class);
return $automationRunStorage->getAutomationRun($automationRunStorage->createAutomationRun($automationRun)); $automationRun = $automationRunStorage->getAutomationRun($automationRunStorage->createAutomationRun($automationRun));
$this->assertInstanceOf(AutomationRun::class, $automationRun);
/** @var AutomationRun $automationRun -- PHPStan fails to exclude "null" */
return $automationRun;
} }
public function getSubscriberEmailsMatchingDynamicFilter(DynamicSegmentFilterData $data, Filter $filter): array { public function getSubscriberEmailsMatchingDynamicFilter(DynamicSegmentFilterData $data, Filter $filter): array {

View File

@@ -55,9 +55,7 @@ class StepHandlerTest extends \MailPoetTest {
// run step // run step
$stepHandler = $this->getServiceWithOverrides(StepHandler::class, ['registry' => $registry]); $stepHandler = $this->getServiceWithOverrides(StepHandler::class, ['registry' => $registry]);
$automation = $this->createAutomation(); $automation = $this->createAutomation();
$this->assertInstanceOf(Automation::class, $automation);
$run = $this->tester->createAutomationRun($automation); $run = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $run);
$stepHandler->handle(['automation_run_id' => $run->getId(), 'step_id' => 'a1', 'run_number' => 1]); $stepHandler->handle(['automation_run_id' => $run->getId(), 'step_id' => 'a1', 'run_number' => 1]);
} }
@@ -70,9 +68,7 @@ class StepHandlerTest extends \MailPoetTest {
$stepHandler = $this->getServiceWithOverrides(StepHandler::class, ['registry' => $registry]); $stepHandler = $this->getServiceWithOverrides(StepHandler::class, ['registry' => $registry]);
$automation = $this->createAutomation(); $automation = $this->createAutomation();
$this->assertInstanceOf(Automation::class, $automation);
$run = $this->tester->createAutomationRun($automation); $run = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $run);
// create start log and modify "updated_at" to an older date // create start log and modify "updated_at" to an older date
$oldDate = new DateTimeImmutable('2000-01-01 00:00:00'); $oldDate = new DateTimeImmutable('2000-01-01 00:00:00');
@@ -104,9 +100,7 @@ class StepHandlerTest extends \MailPoetTest {
$stepHandler = $this->getServiceWithOverrides(StepHandler::class, ['registry' => $registry]); $stepHandler = $this->getServiceWithOverrides(StepHandler::class, ['registry' => $registry]);
$automation = $this->createAutomation(); $automation = $this->createAutomation();
$this->assertInstanceOf(Automation::class, $automation);
$run = $this->tester->createAutomationRun($automation); $run = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $run);
// create start log and modify "updated_at" to an older date // create start log and modify "updated_at" to an older date
$oldDate = new DateTimeImmutable('2000-01-01 00:00:00'); $oldDate = new DateTimeImmutable('2000-01-01 00:00:00');
@@ -144,10 +138,8 @@ class StepHandlerTest extends \MailPoetTest {
]); ]);
$automation = $this->createAutomation(); $automation = $this->createAutomation();
$this->assertInstanceOf(Automation::class, $automation);
$steps = $automation->getSteps(); $steps = $automation->getSteps();
$automationRun = $this->tester->createAutomationRun($automation); $automationRun = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $automationRun);
$currentStep = current($steps); $currentStep = current($steps);
$this->assertInstanceOf(Step::class, $currentStep); $this->assertInstanceOf(Step::class, $currentStep);
@@ -178,7 +170,6 @@ class StepHandlerTest extends \MailPoetTest {
$automation->setStatus($status); $automation->setStatus($status);
$this->automationStorage->updateAutomation($automation); $this->automationStorage->updateAutomation($automation);
$automationRun = $this->tester->createAutomationRun($automation); $automationRun = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $automationRun);
$error = null; $error = null;
try { try {
$stepHandler->handle(['automation_run_id' => $automationRun->getId(), 'step_id' => $currentStep->getId()]); $stepHandler->handle(['automation_run_id' => $automationRun->getId(), 'step_id' => $currentStep->getId()]);
@@ -204,11 +195,8 @@ class StepHandlerTest extends \MailPoetTest {
]); ]);
$automation = $this->createAutomation(); $automation = $this->createAutomation();
$this->assertInstanceOf(Automation::class, $automation);
$automationRun1 = $this->tester->createAutomationRun($automation); $automationRun1 = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $automationRun1);
$automationRun2 = $this->tester->createAutomationRun($automation); $automationRun2 = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $automationRun2);
$automation->setStatus(Automation::STATUS_DEACTIVATING); $automation->setStatus(Automation::STATUS_DEACTIVATING);
$this->automationStorage->updateAutomation($automation); $this->automationStorage->updateAutomation($automation);
@@ -233,7 +221,7 @@ class StepHandlerTest extends \MailPoetTest {
$this->assertSame(AutomationRun::STATUS_COMPLETE, $updatedautomationRun->getStatus()); $this->assertSame(AutomationRun::STATUS_COMPLETE, $updatedautomationRun->getStatus());
} }
private function createAutomation(): ?Automation { private function createAutomation(): Automation {
return $this->tester->createAutomation( return $this->tester->createAutomation(
'Test automation', 'Test automation',
new Step('t', Step::TYPE_TRIGGER, 'test:trigger', [], [new NextStep('a1')]), new Step('t', Step::TYPE_TRIGGER, 'test:trigger', [], [new NextStep('a1')]),

View File

@@ -7,8 +7,6 @@ use ActionScheduler_SimpleSchedule;
use ActionScheduler_Store; use ActionScheduler_Store;
use DateTimeImmutable; use DateTimeImmutable;
use MailPoet\Automation\Engine\Control\StepScheduler; use MailPoet\Automation\Engine\Control\StepScheduler;
use MailPoet\Automation\Engine\Data\Automation;
use MailPoet\Automation\Engine\Data\AutomationRun;
use MailPoet\Automation\Engine\Data\NextStep; use MailPoet\Automation\Engine\Data\NextStep;
use MailPoet\Automation\Engine\Data\Step; use MailPoet\Automation\Engine\Data\Step;
use MailPoet\Automation\Engine\Data\StepRunArgs; use MailPoet\Automation\Engine\Data\StepRunArgs;
@@ -143,9 +141,7 @@ class StepSchedulerTest extends MailPoetTest {
new Step('a1', Step::TYPE_ACTION, 'test:action', [], [new NextStep('a2')]), new Step('a1', Step::TYPE_ACTION, 'test:action', [], [new NextStep('a2')]),
new Step('a2', Step::TYPE_ACTION, 'test:action', [], []) new Step('a2', Step::TYPE_ACTION, 'test:action', [], [])
); );
$this->assertInstanceOf(Automation::class, $automation);
$run = $this->tester->createAutomationRun($automation); $run = $this->tester->createAutomationRun($automation);
$this->assertInstanceOf(AutomationRun::class, $run);
return new StepRunArgs($automation, $run, $automation->getSteps()['a1'], [], 1); return new StepRunArgs($automation, $run, $automation->getSteps()['a1'], [], 1);
} }

View File

@@ -3,7 +3,6 @@
namespace MailPoet\Test\Automation\Engine\Control; namespace MailPoet\Test\Automation\Engine\Control;
use MailPoet\Automation\Engine\Control\TriggerHandler; use MailPoet\Automation\Engine\Control\TriggerHandler;
use MailPoet\Automation\Engine\Data\Automation;
use MailPoet\Automation\Engine\Data\Filter; use MailPoet\Automation\Engine\Data\Filter;
use MailPoet\Automation\Engine\Data\FilterGroup; use MailPoet\Automation\Engine\Data\FilterGroup;
use MailPoet\Automation\Engine\Data\Filters; use MailPoet\Automation\Engine\Data\Filters;
@@ -82,8 +81,6 @@ class TriggerHandlerTest extends \MailPoetTest {
[] []
) )
); );
$this->assertInstanceOf(Automation::class, $automation1);
$this->assertInstanceOf(Automation::class, $automation2);
$this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation1)); $this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation1));
$this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation2)); $this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation2));
@@ -129,8 +126,6 @@ class TriggerHandlerTest extends \MailPoetTest {
[] []
) )
); );
$this->assertInstanceOf(Automation::class, $automation1);
$this->assertInstanceOf(Automation::class, $automation2);
$this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation1)); $this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation1));
$this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation2)); $this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation2));
@@ -158,7 +153,6 @@ class TriggerHandlerTest extends \MailPoetTest {
[] []
) )
); );
$this->assertInstanceOf(Automation::class, $automation1);
$this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation1)); $this->assertEmpty($this->automationRunStorage->getAutomationRunsForAutomation($automation1));
@@ -184,7 +178,6 @@ class TriggerHandlerTest extends \MailPoetTest {
'Will not run', 'Will not run',
new Step('trigger', Step::TYPE_TRIGGER, $trigger->getKey(), [], [], $filters) new Step('trigger', Step::TYPE_TRIGGER, $trigger->getKey(), [], [], $filters)
); );
$this->assertInstanceOf(Automation::class, $automation);
$this->assertCount(0, $this->automationRunStorage->getAutomationRunsForAutomation($automation)); $this->assertCount(0, $this->automationRunStorage->getAutomationRunsForAutomation($automation));
$this->testee->processTrigger($trigger, [$segmentSubject, $subscriberSubject]); $this->testee->processTrigger($trigger, [$segmentSubject, $subscriberSubject]);
$this->assertCount(0, $this->automationRunStorage->getAutomationRunsForAutomation($automation)); $this->assertCount(0, $this->automationRunStorage->getAutomationRunsForAutomation($automation));
@@ -196,7 +189,6 @@ class TriggerHandlerTest extends \MailPoetTest {
'Will run', 'Will run',
new Step('trigger', Step::TYPE_TRIGGER, $trigger->getKey(), [], [], $filters) new Step('trigger', Step::TYPE_TRIGGER, $trigger->getKey(), [], [], $filters)
); );
$this->assertInstanceOf(Automation::class, $automation);
$this->assertCount(0, $this->automationRunStorage->getAutomationRunsForAutomation($automation)); $this->assertCount(0, $this->automationRunStorage->getAutomationRunsForAutomation($automation));
$this->testee->processTrigger($trigger, [$segmentSubject, $subscriberSubject]); $this->testee->processTrigger($trigger, [$segmentSubject, $subscriberSubject]);
$this->assertCount(1, $this->automationRunStorage->getAutomationRunsForAutomation($automation)); $this->assertCount(1, $this->automationRunStorage->getAutomationRunsForAutomation($automation));
@@ -205,9 +197,7 @@ class TriggerHandlerTest extends \MailPoetTest {
public function testItLogs(): void { public function testItLogs(): void {
$trigger = $this->diContainer->get(SomeoneSubscribesTrigger::class); $trigger = $this->diContainer->get(SomeoneSubscribesTrigger::class);
$automation1 = $this->tester->createAutomation('Test 1', new Step('trigger-1', Step::TYPE_TRIGGER, $trigger->getKey(), [], [])); $automation1 = $this->tester->createAutomation('Test 1', new Step('trigger-1', Step::TYPE_TRIGGER, $trigger->getKey(), [], []));
$this->assertInstanceOf(Automation::class, $automation1);
$automation2 = $this->tester->createAutomation('Test 2', new Step('trigger-2', Step::TYPE_TRIGGER, $trigger->getKey(), [], [])); $automation2 = $this->tester->createAutomation('Test 2', new Step('trigger-2', Step::TYPE_TRIGGER, $trigger->getKey(), [], []));
$this->assertInstanceOf(Automation::class, $automation2);
$segmentSubject = new Subject(SegmentSubject::KEY, ['segment_id' => $this->segments['segment_1']->getId()]); $segmentSubject = new Subject(SegmentSubject::KEY, ['segment_id' => $this->segments['segment_1']->getId()]);
$this->testee->processTrigger($trigger, [$segmentSubject]); $this->testee->processTrigger($trigger, [$segmentSubject]);

View File

@@ -16,7 +16,6 @@ class AutomationTest extends \MailPoetTest {
public function testMetaDataIsStored() { public function testMetaDataIsStored() {
$automation = $this->tester->createAutomation('test'); $automation = $this->tester->createAutomation('test');
$this->assertInstanceOf(Automation::class, $automation);
$automation->setMeta('foo', 'bar'); $automation->setMeta('foo', 'bar');
$this->assertEquals('bar', $automation->getMeta('foo')); $this->assertEquals('bar', $automation->getMeta('foo'));
@@ -31,7 +30,6 @@ class AutomationTest extends \MailPoetTest {
public function testMetaDataIsDeleted() { public function testMetaDataIsDeleted() {
$automation = $this->tester->createAutomation('test'); $automation = $this->tester->createAutomation('test');
$this->assertInstanceOf(Automation::class, $automation);
$automation->setMeta('foo', 'bar'); $automation->setMeta('foo', 'bar');
$automation->deleteMeta('foo'); $automation->deleteMeta('foo');
@@ -49,7 +47,6 @@ class AutomationTest extends \MailPoetTest {
public function testAutomationComparisonWorks() { public function testAutomationComparisonWorks() {
$automation = $this->tester->createAutomation('test'); $automation = $this->tester->createAutomation('test');
$this->assertInstanceOf(Automation::class, $automation);
$automation2 = clone $automation; $automation2 = clone $automation;
$automation2->setMeta('foo', 'bar'); $automation2->setMeta('foo', 'bar');
@@ -63,7 +60,6 @@ class AutomationTest extends \MailPoetTest {
*/ */
public function testFullValidationWorks($status, $expected) { public function testFullValidationWorks($status, $expected) {
$automation = $this->tester->createAutomation('test'); $automation = $this->tester->createAutomation('test');
$this->assertInstanceOf(Automation::class, $automation);
$automation->setStatus($status); $automation->setStatus($status);
$this->assertEquals($expected, $automation->needsFullValidation()); $this->assertEquals($expected, $automation->needsFullValidation());
} }

View File

@@ -30,7 +30,6 @@ class AutomationStatisticsStorageTest extends \MailPoetTest {
for ($i = 1; $i <= 3; $i++) { for ($i = 1; $i <= 3; $i++) {
$automation = $this->tester->createAutomation((string)$i); $automation = $this->tester->createAutomation((string)$i);
$this->assertInstanceOf(Automation::class, $automation);
$this->automations[] = $automation->getId(); $this->automations[] = $automation->getId();
} }
} }

View File

@@ -30,7 +30,6 @@ class AutomationTimeSpanControllerTest extends \MailPoetTest {
public function testItReturnsNoEmailWhenNoEmailStepExist() { public function testItReturnsNoEmailWhenNoEmailStepExist() {
$automation = $this->tester->createAutomation('test'); $automation = $this->tester->createAutomation('test');
$this->assertInstanceOf(Automation::class, $automation);
$this->createEmail(); $this->createEmail();
$emails = $this->testee->getEmailsFromAutomations([$automation]); $emails = $this->testee->getEmailsFromAutomations([$automation]);
$this->assertEmpty($emails); $this->assertEmpty($emails);
@@ -67,7 +66,6 @@ class AutomationTimeSpanControllerTest extends \MailPoetTest {
[] []
); );
$automation = $this->tester->createAutomation('test', $trigger, $firstEmail, $secondEmail); $automation = $this->tester->createAutomation('test', $trigger, $firstEmail, $secondEmail);
$this->assertInstanceOf(Automation::class, $automation);
$emails = $this->testee->getEmailsFromAutomations([$automation]); $emails = $this->testee->getEmailsFromAutomations([$automation]);
$this->assertCount(2, $emails); $this->assertCount(2, $emails);
@@ -83,7 +81,6 @@ class AutomationTimeSpanControllerTest extends \MailPoetTest {
$after = new \DateTimeImmutable('2022-01-01 00:00:00'); $after = new \DateTimeImmutable('2022-01-01 00:00:00');
$before = new \DateTimeImmutable('2022-02-02 00:00:00'); $before = new \DateTimeImmutable('2022-02-02 00:00:00');
$automation = $this->tester->createAutomation('test'); $automation = $this->tester->createAutomation('test');
$this->assertInstanceOf(Automation::class, $automation);
$emailBefore = $this->createEmail('emailBefore'); $emailBefore = $this->createEmail('emailBefore');
$emailInTimeSpan = $this->createEmail('emailInTimeSpan'); $emailInTimeSpan = $this->createEmail('emailInTimeSpan');
$emailInTimeSpan2 = $this->createEmail('emailInTimeSpan2'); $emailInTimeSpan2 = $this->createEmail('emailInTimeSpan2');

View File

@@ -160,7 +160,6 @@ class SubscriberAutomationFieldsFactoryTest extends MailPoetTest {
private function createAutomation(string $name, string $status): Automation { private function createAutomation(string $name, string $status): Automation {
$automation = $this->tester->createAutomation($name); $automation = $this->tester->createAutomation($name);
$this->assertInstanceOf(Automation::class, $automation);
$automation->setStatus($status); $automation->setStatus($status);
$this->diContainer->get(AutomationStorage::class)->updateAutomation($automation); $this->diContainer->get(AutomationStorage::class)->updateAutomation($automation);
return $automation; return $automation;
@@ -174,7 +173,6 @@ class SubscriberAutomationFieldsFactoryTest extends MailPoetTest {
): AutomationRun { ): AutomationRun {
$runStorage = $this->diContainer->get(AutomationRunStorage::class); $runStorage = $this->diContainer->get(AutomationRunStorage::class);
$run = $this->tester->createAutomationRun($automation, $subjects); $run = $this->tester->createAutomationRun($automation, $subjects);
$this->assertInstanceOf(AutomationRun::class, $run);
global $wpdb; global $wpdb;
$wpdb->update( $wpdb->update(

View File

@@ -4,7 +4,6 @@ namespace MailPoet\Test\Automation\Integrations\MailPoet\SubjectTransformers;
use MailPoet\Automation\Engine\Control\StepHandler; use MailPoet\Automation\Engine\Control\StepHandler;
use MailPoet\Automation\Engine\Control\TriggerHandler; use MailPoet\Automation\Engine\Control\TriggerHandler;
use MailPoet\Automation\Engine\Data\Automation;
use MailPoet\Automation\Engine\Data\AutomationRun; use MailPoet\Automation\Engine\Data\AutomationRun;
use MailPoet\Automation\Engine\Data\NextStep; use MailPoet\Automation\Engine\Data\NextStep;
use MailPoet\Automation\Engine\Data\Step; use MailPoet\Automation\Engine\Data\Step;
@@ -67,7 +66,6 @@ class OrderSubjectToSubscriberSubjectTransformerTest extends \MailPoetTest {
new Step('action', Step::TYPE_ACTION, $testAction->getKey(), [], []), new Step('action', Step::TYPE_ACTION, $testAction->getKey(), [], []),
]; ];
$automation = $this->tester->createAutomation('test', ...$steps); $automation = $this->tester->createAutomation('test', ...$steps);
$this->assertInstanceOf(Automation::class, $automation);
/** /**
* We need to register the hooks ourselves because the active automation has been created too late * We need to register the hooks ourselves because the active automation has been created too late