From f66be1b94749f1c0ec8ef5f12b9987b44ff03f9e Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Thu, 26 Jan 2023 17:13:28 +0100 Subject: [PATCH] Improve typehints and doctypes for the woo revenue tracking [MAILPOET-5014] --- mailpoet/lib/Config/HooksWooCommerce.php | 3 +++ .../StatisticsWooCommercePurchasesRepository.php | 2 +- mailpoet/lib/WooCommerce/Tracker.php | 9 +-------- .../integration/WooCommerce/TrackerTest.php | 16 ++++++++-------- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/mailpoet/lib/Config/HooksWooCommerce.php b/mailpoet/lib/Config/HooksWooCommerce.php index 08300ee1e3..da7c6001ef 100644 --- a/mailpoet/lib/Config/HooksWooCommerce.php +++ b/mailpoet/lib/Config/HooksWooCommerce.php @@ -150,6 +150,9 @@ class HooksWooCommerce { } public function addTrackingData($data) { + if (!is_array($data)) { + return $data; + } return $this->tracker->addTrackingData($data); } diff --git a/mailpoet/lib/Statistics/StatisticsWooCommercePurchasesRepository.php b/mailpoet/lib/Statistics/StatisticsWooCommercePurchasesRepository.php index a04a921133..074b6a375d 100644 --- a/mailpoet/lib/Statistics/StatisticsWooCommercePurchasesRepository.php +++ b/mailpoet/lib/Statistics/StatisticsWooCommercePurchasesRepository.php @@ -47,7 +47,7 @@ class StatisticsWooCommercePurchasesRepository extends Repository { $this->flush(); } - public function getRevenuesByCampaigns() { + public function getRevenuesByCampaigns(): array { $revenueStatsTable = $this->entityManager->getClassMetadata(StatisticsWooCommercePurchaseEntity::class)->getTableName(); $newsletterTable = $this->entityManager->getClassMetadata(NewsletterEntity::class)->getTableName(); diff --git a/mailpoet/lib/WooCommerce/Tracker.php b/mailpoet/lib/WooCommerce/Tracker.php index 5a88d666b4..c20ee107d0 100644 --- a/mailpoet/lib/WooCommerce/Tracker.php +++ b/mailpoet/lib/WooCommerce/Tracker.php @@ -32,14 +32,7 @@ class Tracker { $this->loggerFactory = $loggerFactory; } - /** - * @param array $data - * @return array - */ - public function addTrackingData($data): array { - if (!is_array($data)) { - return $data; - } + public function addTrackingData(array $data): array { try { $analyticsData = $this->newslettersRepository->getAnalytics(); $data['extensions']['mailpoet'] = [ diff --git a/mailpoet/tests/integration/WooCommerce/TrackerTest.php b/mailpoet/tests/integration/WooCommerce/TrackerTest.php index e1ac99026a..8c69caabf6 100644 --- a/mailpoet/tests/integration/WooCommerce/TrackerTest.php +++ b/mailpoet/tests/integration/WooCommerce/TrackerTest.php @@ -24,7 +24,7 @@ class TrackerTest extends \MailPoetTest { /** @var Tracker */ private $tracker; - public function _before() { + public function _before(): void { parent::_before(); $this->cleanUp(); $this->subscriber = (new Subscriber())->create(); @@ -37,14 +37,14 @@ class TrackerTest extends \MailPoetTest { $this->entityManager->flush(); } - public function testItAddsTrackingData() { + public function testItAddsTrackingData(): void { $data = $this->tracker->addTrackingData(['extensions' => []]); expect($data['extensions']['mailpoet'])->notEmpty(); expect($data['extensions']['mailpoet']['campaigns_count'])->notNull(); expect($data['extensions']['mailpoet']['currency'])->notNull(); } - public function testItAddsCampaignRevenuesForStandardNewsletters() { + public function testItAddsCampaignRevenuesForStandardNewsletters(): void { $newsletter1 = (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_STANDARD)->create(); $newsletter2 = (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_STANDARD)->create(); $this->createRevenueRecord($newsletter1, $this->createOrderData(1, 'USD', 10)); @@ -63,7 +63,7 @@ class TrackerTest extends \MailPoetTest { expect($mailPoetData['campaign_' . $newsletter2->getId() . '_orders_count'])->equals(1); } - public function testItAddsCampaignRevenuesForAutomaticCampaigns() { + public function testItAddsCampaignRevenuesForAutomaticCampaigns(): void { $newsletter1 = (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_WELCOME)->create(); $newsletter2 = (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_AUTOMATIC)->create(); $newsletter3 = (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_AUTOMATION)->create(); @@ -87,7 +87,7 @@ class TrackerTest extends \MailPoetTest { expect($mailPoetData['campaign_' . $newsletter3->getId() . '_orders_count'])->equals(1); } - public function testItAddsTotalCampaigns() { + public function testItAddsTotalCampaigns(): void { (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_WELCOME)->withStatus(NewsletterEntity::STATUS_ACTIVE)->create(); (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_AUTOMATIC)->withStatus(NewsletterEntity::STATUS_ACTIVE)->create(); (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_AUTOMATION)->withStatus(NewsletterEntity::STATUS_ACTIVE)->create(); @@ -103,7 +103,7 @@ class TrackerTest extends \MailPoetTest { expect($campaignsCount)->equals(6); } - public function testItAddsCampaignRevenuesPostNotificationsUnderTheParentId() { + public function testItAddsCampaignRevenuesPostNotificationsUnderTheParentId(): void { $notificationParent = (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_NOTIFICATION)->create(); $notificationHistory1 = (new Newsletter())->withSendingQueue()->withType(NewsletterEntity::TYPE_NOTIFICATION_HISTORY)->create(); $notificationHistory1->setParent($notificationParent); @@ -126,7 +126,7 @@ class TrackerTest extends \MailPoetTest { /** * Because we save the revenue for every recent click, we need to make sure we count the order only once (for the first click) */ - public function testItTracksTheRevenueOncePerOrder() { + public function testItTracksTheRevenueOncePerOrder(): void { $newsletter1 = (new Newsletter())->withSendingQueue()->create(); $newsletter2 = (new Newsletter())->withSendingQueue()->create(); $newsletter3 = (new Newsletter())->withSendingQueue()->create(); @@ -167,7 +167,7 @@ class TrackerTest extends \MailPoetTest { return (new StatisticsWooCommercePurchases($click, $orderData))->create(); } - private function cleanUp() { + private function cleanUp(): void { $this->truncateEntity(NewsletterLinkEntity::class); $this->truncateEntity(NewsletterEntity::class); $this->truncateEntity(SubscriberEntity::class);