From 0ea8715ef06bec3053a1eb23e4ba1fc92a87f8a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Wed, 3 Jul 2019 14:46:03 +0200 Subject: [PATCH] Add feature flag for WooCommerce orders sync job [MAILPOET-2165] --- lib/Cron/Workers/WooCommerceOrders.php | 15 ++++++++++++++- lib/Cron/Workers/WorkersFactory.php | 2 +- .../Cron/Workers/WooCommerceOrdersTest.php | 10 +++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/Cron/Workers/WooCommerceOrders.php b/lib/Cron/Workers/WooCommerceOrders.php index f825e5227a..0a3cca7ab9 100644 --- a/lib/Cron/Workers/WooCommerceOrders.php +++ b/lib/Cron/Workers/WooCommerceOrders.php @@ -2,6 +2,7 @@ namespace MailPoet\Cron\Workers; use Carbon\Carbon; +use MailPoet\Features\FeaturesController; use MailPoet\Models\ScheduledTask; use MailPoet\Models\StatisticsClicks; use MailPoet\Statistics\Track\WooCommercePurchases; @@ -20,13 +21,25 @@ class WooCommerceOrders extends SimpleWorker { /** @var WooCommercePurchases */ private $woocommerce_purchases; - function __construct(WCHelper $woocommerce_helper, WooCommercePurchases $woocommerce_purchases, $timer = false) { + /** @var FeaturesController */ + private $features_controller; + + function __construct( + WCHelper $woocommerce_helper, + WooCommercePurchases $woocommerce_purchases, + FeaturesController $features_controller, + $timer = false + ) { $this->woocommerce_helper = $woocommerce_helper; $this->woocommerce_purchases = $woocommerce_purchases; + $this->features_controller = $features_controller; parent::__construct($timer); } function checkProcessingRequirements() { + if (!$this->features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES)) { + return false; + } return $this->woocommerce_helper->isWooCommerceActive() && empty(self::getCompletedTasks()); // run only once } diff --git a/lib/Cron/Workers/WorkersFactory.php b/lib/Cron/Workers/WorkersFactory.php index 6d62659fc7..a04967351a 100644 --- a/lib/Cron/Workers/WorkersFactory.php +++ b/lib/Cron/Workers/WorkersFactory.php @@ -153,6 +153,6 @@ class WorkersFactory { /** @return WooCommerceOrders */ function createWooCommerceOrdersWorker($timer) { - return new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, $timer); + return new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, $this->features_controller, $timer); } } diff --git a/tests/integration/Cron/Workers/WooCommerceOrdersTest.php b/tests/integration/Cron/Workers/WooCommerceOrdersTest.php index 59953b488c..404d159245 100644 --- a/tests/integration/Cron/Workers/WooCommerceOrdersTest.php +++ b/tests/integration/Cron/Workers/WooCommerceOrdersTest.php @@ -4,6 +4,8 @@ namespace MailPoet\Test\Cron\Workers; use DateTime; use MailPoet\Cron\Workers\WooCommerceOrders; +use MailPoet\Features\FeaturesController; +use MailPoet\Models\FeatureFlag; use MailPoet\Models\ScheduledTask; use MailPoet\Models\StatisticsClicks; use MailPoet\Statistics\Track\WooCommercePurchases; @@ -23,7 +25,12 @@ class WooCommerceOrdersTest extends \MailPoetTest { $this->cleanup(); $this->woocommerce_helper = $this->createMock(WooCommerceHelper::class); $this->woocommerce_purchases = $this->createMock(WooCommercePurchases::class); - $this->worker = new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, microtime(true)); + + FeatureFlag::createOrUpdate([ + 'name' => FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES, + 'value' => true, + ]); + $this->worker = new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, new FeaturesController(), microtime(true)); } function testItDoesNotRunIfWooCommerceIsDisabled() { @@ -139,6 +146,7 @@ class WooCommerceOrdersTest extends \MailPoetTest { } private function cleanup() { + \ORM::raw_execute('TRUNCATE ' . FeatureFlag::$_table); \ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table); \ORM::raw_execute('TRUNCATE ' . StatisticsClicks::$_table); }