diff --git a/mailpoet/lib/API/API.php b/mailpoet/lib/API/API.php index d07fed0c9c..ff2c7ff884 100644 --- a/mailpoet/lib/API/API.php +++ b/mailpoet/lib/API/API.php @@ -12,6 +12,7 @@ class API { * @throws \Exception */ public static function MP($version) { + /** @var class-string<\MailPoet\API\MP\v1\API> $apiClass */ $apiClass = sprintf('%s\MP\%s\API', __NAMESPACE__, $version); try { return ContainerWrapper::getInstance()->get($apiClass); diff --git a/mailpoet/lib/DI/ContainerWrapper.php b/mailpoet/lib/DI/ContainerWrapper.php index a161a1c694..643cd50ffc 100644 --- a/mailpoet/lib/DI/ContainerWrapper.php +++ b/mailpoet/lib/DI/ContainerWrapper.php @@ -64,7 +64,7 @@ class ContainerWrapper implements ContainerInterface { return $this->premiumContainer; } - public static function getInstance($debug = false) { + public static function getInstance($debug = false): ContainerWrapper { if (self::$instance) { return self::$instance; } diff --git a/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/NewsletterStatsBaseExporter.php b/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/NewsletterStatsBaseExporter.php index 65220a4985..160bdf3ef9 100644 --- a/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/NewsletterStatsBaseExporter.php +++ b/mailpoet/lib/Subscribers/ImportExport/PersonalDataExporters/NewsletterStatsBaseExporter.php @@ -4,12 +4,15 @@ namespace MailPoet\Subscribers\ImportExport\PersonalDataExporters; use MailPoet\DI\ContainerWrapper; use MailPoet\Entities\SubscriberEntity; +use MailPoet\Statistics\StatisticsClicksRepository; +use MailPoet\Statistics\StatisticsOpensRepository; use MailPoet\Subscribers\SubscribersRepository; abstract class NewsletterStatsBaseExporter { const LIMIT = 100; + /** @var class-string|class-string */ protected $statsClassName; protected $subscriberRepository; @@ -38,6 +41,8 @@ abstract class NewsletterStatsBaseExporter { $result = []; $statsClass = ContainerWrapper::getInstance()->get($this->statsClassName); + + /** @var array[] $statistics */ $statistics = $statsClass->getAllForSubscriber($subscriber) ->setMaxResults(self::LIMIT) ->setFirstResult(self::LIMIT * ($page - 1)) diff --git a/mailpoet/lib/Tasks/Sending.php b/mailpoet/lib/Tasks/Sending.php index 8d8da6e3df..3e872ab69c 100644 --- a/mailpoet/lib/Tasks/Sending.php +++ b/mailpoet/lib/Tasks/Sending.php @@ -5,6 +5,7 @@ namespace MailPoet\Tasks; use MailPoet\Cron\Workers\SendingQueue\SendingQueue as SendingQueueAlias; use MailPoet\DI\ContainerWrapper; use MailPoet\Entities\SendingQueueEntity; +use MailPoet\InvalidStateException; use MailPoet\Logging\LoggerFactory; use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTaskSubscriber; @@ -194,6 +195,9 @@ class Sending { public function getSendingQueueEntity(): SendingQueueEntity { $sendingQueuesRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class); $sendingQueueEntity = $sendingQueuesRepository->findOneById($this->queue->id); + if (!$sendingQueueEntity) { + throw new InvalidStateException(); + } $sendingQueuesRepository->refresh($sendingQueueEntity); return $sendingQueueEntity; diff --git a/mailpoet/tests/DataFactories/AutomationRun.php b/mailpoet/tests/DataFactories/AutomationRun.php index abb4c00290..bd46c704e5 100644 --- a/mailpoet/tests/DataFactories/AutomationRun.php +++ b/mailpoet/tests/DataFactories/AutomationRun.php @@ -13,6 +13,7 @@ use MailPoet\Automation\Engine\Storage\AutomationRunLogStorage; use MailPoet\Automation\Engine\Storage\AutomationRunStorage; use MailPoet\Automation\Engine\Storage\AutomationStorage; use MailPoet\DI\ContainerWrapper; +use MailPoet\InvalidStateException; class AutomationRun { @@ -106,11 +107,17 @@ class AutomationRun { $id = $this->storage->createAutomationRun($automationRun); $this->storage->updateNextStep($id, $this->nextStep); $this->automationRun = $this->storage->getAutomationRun($id); + if (!$this->automationRun) { + throw new InvalidStateException(); + } return $this->automationRun; } public function generateLogs(Entity $run, string $lastStep) { $automation = ContainerWrapper::getInstance(WP_DEBUG)->get(AutomationStorage::class)->getAutomation($run->getAutomationId()); + if (!$automation) { + throw new InvalidStateException(); + } $steps = $this->findPathToStep($automation, $lastStep); $logStorage = ContainerWrapper::getInstance(WP_DEBUG)->get(AutomationRunLogStorage::class); diff --git a/mailpoet/tests/_support/IntegrationCleanupExtension.php b/mailpoet/tests/_support/IntegrationCleanupExtension.php index 32e87cac17..69080e45ac 100644 --- a/mailpoet/tests/_support/IntegrationCleanupExtension.php +++ b/mailpoet/tests/_support/IntegrationCleanupExtension.php @@ -27,6 +27,8 @@ class IntegrationCleanupExtension extends Extension { $this->entityManager = ContainerWrapper::getInstance()->get(EntityManager::class); $mpPrefix = Env::$dbPrefix; + + /** @var string[] $tables */ $tables = $this->entityManager->getConnection()->fetchFirstColumn(" SELECT table_name FROM information_schema.tables diff --git a/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php b/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php index f34542ff54..ed04d41899 100644 --- a/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php +++ b/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php @@ -250,6 +250,7 @@ class NewsletterTest extends \MailPoetTest { $newsletterPost = $newsletterPostRepository->findOneBy(['newsletter' => $this->newsletter->getId()]); expect($newsletterPost)->isInstanceOf(NewsletterPostEntity::class); expect($result)->notEquals(false); + $this->assertInstanceOf(NewsletterPostEntity::class, $newsletterPost); expect($newsletterPost->getPostId())->equals('10'); } diff --git a/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/PostsTest.php b/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/PostsTest.php index 516e6518ad..d40ae176e4 100644 --- a/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/PostsTest.php +++ b/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/PostsTest.php @@ -47,8 +47,8 @@ class PostsTest extends \MailPoetTest { expect($this->postsTask->extractAndSave($renderedNewsletter, $newsletter))->equals(true); $newsletterPostRepository = ContainerWrapper::getInstance()->get(NewsletterPostsRepository::class); $newsletterPost = $newsletterPostRepository->findOneBy(['newsletter' => $parent]); - expect($newsletterPost)->isInstanceOf(NewsletterPostEntity::class); - expect($newsletterPost->getPostId())->equals($postId); + $this->assertInstanceOf(NewsletterPostEntity::class, $newsletterPost); + $this->assertSame($newsletterPost->getPostId(), $postId); } public function testItDoesNotSavePostsWhenNewsletterIsNotANotificationHistory() { diff --git a/mailpoet/tests/integration/REST/Automation/Automations/AutomationsCreateFromTemplateTest.php b/mailpoet/tests/integration/REST/Automation/Automations/AutomationsCreateFromTemplateTest.php index 93fd48e208..4bb97876c5 100644 --- a/mailpoet/tests/integration/REST/Automation/Automations/AutomationsCreateFromTemplateTest.php +++ b/mailpoet/tests/integration/REST/Automation/Automations/AutomationsCreateFromTemplateTest.php @@ -72,7 +72,8 @@ class AutomationsCreateFromTemplateTest extends AutomationTest { ]); $allAutomations = $storage->getAutomations(); $createdAutomation = array_pop($allAutomations); - expect($createdAutomation->getStatus())->equals('draft'); + $this->assertInstanceOf(Automation::class, $createdAutomation); + $this->assertSame($createdAutomation->getStatus(), 'draft'); } public function testAutomationsCreatedFromTemplatesReturnsAutomationId(): void {