diff --git a/lib/Config/Initializer.php b/lib/Config/Initializer.php index 9dc85b6493..c3368b8cca 100644 --- a/lib/Config/Initializer.php +++ b/lib/Config/Initializer.php @@ -235,7 +235,7 @@ class Initializer { function setupCronTrigger() { // setup cron trigger only outside of cli environment if(php_sapi_name() !== 'cli') { - $cron_trigger = new CronTrigger(); + $cron_trigger = $this->container->get(CronTrigger::class); $cron_trigger->init(); } } diff --git a/lib/Cron/CronHelper.php b/lib/Cron/CronHelper.php index ab939f9739..8a6a3ad64b 100644 --- a/lib/Cron/CronHelper.php +++ b/lib/Cron/CronHelper.php @@ -5,6 +5,7 @@ namespace MailPoet\Cron; use MailPoet\Models\Setting; use MailPoet\Router\Endpoints\CronDaemon as CronDaemonEndpoint; use MailPoet\Router\Router; +use MailPoet\Settings\SettingsController; use MailPoet\Util\Security; use MailPoet\WP\Functions as WPFunctions; @@ -36,7 +37,8 @@ class CronHelper { } static function getDaemon() { - return Setting::getValue(self::DAEMON_SETTING); + $settings = new SettingsController(); + return $settings->fetch(self::DAEMON_SETTING); } static function saveDaemonLastError($error) { @@ -57,7 +59,8 @@ class CronHelper { static function saveDaemon($daemon) { $daemon['updated_at'] = time(); - return Setting::setValue( + $settings = new SettingsController(); + $settings->set( self::DAEMON_SETTING, $daemon ); @@ -65,7 +68,8 @@ class CronHelper { static function deactivateDaemon($daemon) { $daemon['status'] = self::DAEMON_STATUS_INACTIVE; - return Setting::setValue( + $settings = new SettingsController(); + $settings->set( self::DAEMON_SETTING, $daemon ); diff --git a/lib/Cron/CronTrigger.php b/lib/Cron/CronTrigger.php index df3edccb41..c1d7c847bf 100644 --- a/lib/Cron/CronTrigger.php +++ b/lib/Cron/CronTrigger.php @@ -2,6 +2,7 @@ namespace MailPoet\Cron; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; if(!defined('ABSPATH')) exit; @@ -16,8 +17,8 @@ class CronTrigger { const DEFAULT_METHOD = 'WordPress'; const SETTING_NAME = 'cron_trigger'; - function __construct() { - $this->current_method = self::getCurrentMethod(); + function __construct(SettingsController $settingsController) { + $this->current_method = $settingsController->get(self::SETTING_NAME . '.method'); } function init() { @@ -34,8 +35,4 @@ class CronTrigger { static function getAvailableMethods() { return self::$available_methods; } - - static function getCurrentMethod() { - return Setting::getValue(self::SETTING_NAME . '.method'); - } } diff --git a/lib/Cron/Triggers/WordPress.php b/lib/Cron/Triggers/WordPress.php index 5f97591df2..fb41b0c133 100644 --- a/lib/Cron/Triggers/WordPress.php +++ b/lib/Cron/Triggers/WordPress.php @@ -12,6 +12,7 @@ use MailPoet\Cron\Workers\StatsNotifications\Worker; use MailPoet\Mailer\MailerLog; use MailPoet\Models\Setting; use MailPoet\Services\Bridge; +use MailPoet\Settings\SettingsController; if(!defined('ABSPATH')) exit; @@ -24,7 +25,8 @@ class WordPress { static function checkExecutionRequirements() { // migration - $migration_disabled = Setting::getValue('cron_trigger.method') === 'none'; + $settings = new SettingsController(); + $migration_disabled = $settings->get('cron_trigger.method') === 'none'; $migration_due_tasks = MigrationWorker::getDueTasks(); $migration_completed_tasks = MigrationWorker::getCompletedTasks(); $migration_future_tasks = MigrationWorker::getFutureTasks(); diff --git a/lib/Cron/Workers/KeyCheck/PremiumKeyCheck.php b/lib/Cron/Workers/KeyCheck/PremiumKeyCheck.php index edd0ed8db1..5a29b81df8 100644 --- a/lib/Cron/Workers/KeyCheck/PremiumKeyCheck.php +++ b/lib/Cron/Workers/KeyCheck/PremiumKeyCheck.php @@ -3,18 +3,28 @@ namespace MailPoet\Cron\Workers\KeyCheck; use MailPoet\Models\Setting; use MailPoet\Services\Bridge; +use MailPoet\Settings\SettingsController; if(!defined('ABSPATH')) exit; class PremiumKeyCheck extends KeyCheckWorker { const TASK_TYPE = 'premium_key_check'; + /** @var SettingsController */ + private $settings; + + function __construct(SettingsController $settings, $timer = false) { + $this->settings = $settings; + parent::__construct($timer); + } + + function checkProcessingRequirements() { return Bridge::isPremiumKeySpecified(); } function checkKey() { - $premium_key = Setting::getValue(Bridge::PREMIUM_KEY_SETTING_NAME); + $premium_key = $this->settings->get(Bridge::PREMIUM_KEY_SETTING_NAME); $result = $this->bridge->checkPremiumKey($premium_key); $this->bridge->storePremiumKeyAndState($premium_key, $result); return $result; diff --git a/lib/Cron/Workers/SendingQueue/Tasks/Links.php b/lib/Cron/Workers/SendingQueue/Tasks/Links.php index f01780a423..dc5a4dd7b1 100644 --- a/lib/Cron/Workers/SendingQueue/Tasks/Links.php +++ b/lib/Cron/Workers/SendingQueue/Tasks/Links.php @@ -1,6 +1,7 @@ findOne(); - - if((boolean)Setting::getValue('tracking.enabled')) { + $settings = new SettingsController(); + if((boolean)$settings->get('tracking.enabled')) { $link_hash = NewsletterLinkModel::where('queue_id', $queue->id) ->where('url', '[link:subscription_unsubscribe_url]') ->findOne() diff --git a/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php b/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php index a97e5bce95..ea0ffb2c03 100644 --- a/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php +++ b/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php @@ -9,9 +9,9 @@ use MailPoet\Mailer\MailerLog; use MailPoet\Models\Newsletter as NewsletterModel; use MailPoet\Models\NewsletterSegment as NewsletterSegmentModel; use MailPoet\Models\SendingQueue as SendingQueueModel; -use MailPoet\Models\Setting; use MailPoet\Newsletter\Links\Links as NewsletterLinks; use MailPoet\Newsletter\Renderer\PostProcess\OpenTracking; +use MailPoet\Settings\SettingsController; use MailPoet\Util\Helpers; use MailPoet\WP\Functions as WPFunctions; @@ -21,10 +21,12 @@ class Newsletter { public $tracking_enabled; public $tracking_image_inserted; + /** @var WPFunctions */ private $wp; function __construct(WPFunctions $wp = null) { - $this->tracking_enabled = (boolean)Setting::getValue('tracking.enabled'); + $settings = new SettingsController(); + $this->tracking_enabled = (boolean)$settings->get('tracking.enabled'); if($wp == null) { $wp = new WPFunctions; } diff --git a/lib/Cron/Workers/WorkersFactory.php b/lib/Cron/Workers/WorkersFactory.php index 88107246a7..f74e31308b 100644 --- a/lib/Cron/Workers/WorkersFactory.php +++ b/lib/Cron/Workers/WorkersFactory.php @@ -13,6 +13,7 @@ use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker; use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker; use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler; use MailPoet\Mailer\Mailer; +use MailPoet\Settings\SettingsController; class WorkersFactory { @@ -25,16 +26,26 @@ class WorkersFactory { /** @var Mailer */ private $mailer; + /** @var SettingsController */ + private $settings; + /** * @var Renderer */ private $renderer; - public function __construct(SendingErrorHandler $sending_error_handler, StatsNotificationScheduler $scheduler, Mailer $mailer, Renderer $renderer) { + public function __construct( + SendingErrorHandler $sending_error_handler, + StatsNotificationScheduler $scheduler, + Mailer $mailer, + Renderer $renderer, + SettingsController $settings + ) { $this->sending_error_handler = $sending_error_handler; $this->scheduler = $scheduler; $this->mailer = $mailer; $this->renderer = $renderer; + $this->settings = $settings; } /** @return SchedulerWorker */ @@ -58,7 +69,7 @@ class WorkersFactory { /** @return PremiumKeyCheckWorker */ function createPremiumKeyCheckWorker($timer) { - return new PremiumKeyCheckWorker($timer); + return new PremiumKeyCheckWorker($this->settings, $timer); } /** @return BounceWorker */ diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index c34ccfb096..9c94abc87b 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -64,6 +64,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Cron\Workers\WorkersFactory::class)->setPublic(true); $container->autowire(\MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler::class)->setPublic(true); $container->autowire(\MailPoet\Cron\Workers\StatsNotifications\Scheduler::class); + $container->autowire(\MailPoet\Cron\CronTrigger::class)->setPublic(true); // Listing $container->autowire(\MailPoet\Listing\BulkActionController::class)->setPublic(true); $container->autowire(\MailPoet\Listing\Handler::class)->setPublic(true); diff --git a/tests/integration/Cron/CronHelperTest.php b/tests/integration/Cron/CronHelperTest.php index ff4d5de289..ba44233805 100644 --- a/tests/integration/Cron/CronHelperTest.php +++ b/tests/integration/Cron/CronHelperTest.php @@ -7,14 +7,20 @@ use AspectMock\Test as Mock; use MailPoet\Cron\CronHelper; use MailPoet\Cron\DaemonHttpRunner; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; use MailPoet\WP\Functions as WPFunctions; class CronHelperTest extends \MailPoetTest { + + /** @var SettingsController */ + private $settings; + function _before() { parent::_before(); - Setting::setValue('db_version', MAILPOET_VERSION); + $this->settings = new SettingsController(); + $this->settings->set('db_version', MAILPOET_VERSION); // Disable cron trigger to not run tasks like migration when pinging the daemon - Setting::setValue('cron_trigger', array( + $this->settings->set('cron_trigger', array( 'method' => 'none' )); Setting::setValue('sender', array( @@ -34,7 +40,7 @@ class CronHelperTest extends \MailPoetTest { $token = 'create_token'; $time = time(); CronHelper::createDaemon($token); - $daemon = Setting::getValue(CronHelper::DAEMON_SETTING); + $daemon = $this->settings->get(CronHelper::DAEMON_SETTING); expect($daemon)->equals( array( 'token' => $token, @@ -52,7 +58,7 @@ class CronHelperTest extends \MailPoetTest { $token = 'restart_token'; $time = time(); CronHelper::restartDaemon($token); - $daemon = Setting::getValue(CronHelper::DAEMON_SETTING); + $daemon = $this->settings->get(CronHelper::DAEMON_SETTING); expect($daemon)->equals( array( 'token' => $token, @@ -68,7 +74,7 @@ class CronHelperTest extends \MailPoetTest { function testItLoadsDaemon() { $daemon = $this->getDeamonTestData(); - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -78,7 +84,7 @@ class CronHelperTest extends \MailPoetTest { function testItSavesDaemon() { // when saving daemon, 'updated_at' value should change $daemon = $this->getDeamonTestData(); - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -90,7 +96,7 @@ class CronHelperTest extends \MailPoetTest { function testItUpdatesDaemonAccessedAt() { $daemon = $this->getDeamonTestData(); - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -118,7 +124,7 @@ class CronHelperTest extends \MailPoetTest { $daemon = $this->getDeamonTestData(); $daemon['run_accessed_at'] = $time - 10; $daemon['run_started_at'] = $run_start; - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -131,7 +137,7 @@ class CronHelperTest extends \MailPoetTest { $daemon = $this->getDeamonTestData(); $daemon['run_accessed_at'] = $time - 5; $daemon['run_started_at'] = $time - 4; - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -159,7 +165,7 @@ class CronHelperTest extends \MailPoetTest { $daemon = $this->getDeamonTestData(); $daemon['run_accessed_at'] = $test_input['run_access']; $daemon['run_started_at'] = $test_input['run_start']; - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -169,7 +175,7 @@ class CronHelperTest extends \MailPoetTest { function testItDeactivatesDaemon() { $daemon = $this->getDeamonTestData(); - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -181,7 +187,7 @@ class CronHelperTest extends \MailPoetTest { function testItSavesLastError() { $daemon = $this->getDeamonTestData(); - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); @@ -194,7 +200,7 @@ class CronHelperTest extends \MailPoetTest { function testItSavesRunCompletedAt() { $daemon = $this->getDeamonTestData(); - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, $daemon ); diff --git a/tests/integration/Cron/CronTriggerTest.php b/tests/integration/Cron/CronTriggerTest.php index 9c1d8ab46f..40d5a8438f 100644 --- a/tests/integration/Cron/CronTriggerTest.php +++ b/tests/integration/Cron/CronTriggerTest.php @@ -3,14 +3,20 @@ namespace MailPoet\Test\Cron; use MailPoet\Cron\CronTrigger; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; require_once('CronTriggerMockMethod.php'); require_once('CronTriggerMockMethodWithException.php'); class CronTriggerTest extends \MailPoetTest { + + /** @var SettingsController */ + private $settings; + function _before() { parent::_before(); - $this->cron_trigger = new CronTrigger(); + $this->settings = new SettingsController(); + $this->cron_trigger = new CronTrigger($this->settings); } function testItCanDefineConstants() { @@ -31,11 +37,6 @@ class CronTriggerTest extends \MailPoetTest { ->equals(CronTrigger::DEFAULT_METHOD); } - function testItCanGetCurrentMethod() { - Setting::setValue(CronTrigger::SETTING_NAME, array('method' => 'CronTriggerMockMethod')); - expect($this->cron_trigger->getCurrentMethod())->equals('CronTriggerMockMethod'); - } - function testItCanReturnAvailableMethods() { expect($this->cron_trigger->getAvailableMethods()) ->equals(CronTrigger::$available_methods); diff --git a/tests/integration/Cron/DaemonHttpRunnerTest.php b/tests/integration/Cron/DaemonHttpRunnerTest.php index 5a80a7546c..a80cb7ce95 100644 --- a/tests/integration/Cron/DaemonHttpRunnerTest.php +++ b/tests/integration/Cron/DaemonHttpRunnerTest.php @@ -9,10 +9,20 @@ use MailPoet\Cron\DaemonHttpRunner; use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler; use MailPoet\Cron\Workers\WorkersFactory; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; class DaemonHttpRunnerTest extends \MailPoetTest { + + /** @var SettingsController */ + private $settings; + + function _before() { + parent::_before(); + $this->settings = new SettingsController(); + } + function testItConstructs() { - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, [] ); @@ -69,10 +79,10 @@ class DaemonHttpRunnerTest extends \MailPoetTest { 'pauseExecution' => null, 'callSelf' => null ), $this); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon_http_runner->__construct($daemon); $daemon_http_runner->run($data); - $updated_daemon = Setting::getValue(CronHelper::DAEMON_SETTING); + $updated_daemon = $this->settings->get(CronHelper::DAEMON_SETTING); expect($updated_daemon['last_error'])->greaterOrEquals('Message'); } @@ -89,7 +99,7 @@ class DaemonHttpRunnerTest extends \MailPoetTest { $data = array( 'token' => 123 ); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon_http_runner->__construct($daemon); $daemon_http_runner->run($data); } @@ -98,7 +108,7 @@ class DaemonHttpRunnerTest extends \MailPoetTest { function testItTerminatesExecutionWhenDaemonIsDeleted() { $daemon = Stub::make(DaemonHttpRunner::class, array( 'executeScheduleWorker' => function() { - Setting::deleteValue(CronHelper::DAEMON_SETTING); + $this->settings->delete(CronHelper::DAEMON_SETTING); }, 'executeQueueWorker' => null, 'pauseExecution' => null, @@ -107,7 +117,7 @@ class DaemonHttpRunnerTest extends \MailPoetTest { $data = array( 'token' => 123 ); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon->__construct(Stub::makeEmpty(Daemon::class)); $daemon->run($data); } @@ -115,7 +125,7 @@ class DaemonHttpRunnerTest extends \MailPoetTest { function testItTerminatesExecutionWhenDaemonTokenChangesAndKeepsChangedToken() { $daemon = Stub::make(DaemonHttpRunner::class, array( 'executeScheduleWorker' => function() { - Setting::setValue( + $this->settings->set( CronHelper::DAEMON_SETTING, array('token' => 567) ); @@ -127,10 +137,10 @@ class DaemonHttpRunnerTest extends \MailPoetTest { $data = array( 'token' => 123 ); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon->__construct(Stub::makeEmpty(Daemon::class)); $daemon->run($data); - $data_after_run = Setting::getValue(CronHelper::DAEMON_SETTING); + $data_after_run = $this->settings->get(CronHelper::DAEMON_SETTING); expect($data_after_run['token'], 567); } @@ -145,7 +155,7 @@ class DaemonHttpRunnerTest extends \MailPoetTest { 'token' => 123, 'status' => CronHelper::DAEMON_STATUS_INACTIVE, ]; - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon->__construct(Stub::makeEmpty(Daemon::class)); $daemon->run($data); } @@ -161,10 +171,10 @@ class DaemonHttpRunnerTest extends \MailPoetTest { $data = array( 'token' => 123 ); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon_http_runner->__construct(Stub::makeEmptyExcept(Daemon::class, 'run')); $daemon_http_runner->run($data); - $updated_daemon = Setting::getValue(CronHelper::DAEMON_SETTING); + $updated_daemon = $this->settings->get(CronHelper::DAEMON_SETTING); expect($updated_daemon['token'])->equals($daemon_http_runner->token); } @@ -188,10 +198,10 @@ class DaemonHttpRunnerTest extends \MailPoetTest { 'token' => 123, ); $now = time(); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon_http_runner->__construct($daemon); $daemon_http_runner->run($data); - $updated_daemon = Setting::getValue(CronHelper::DAEMON_SETTING); + $updated_daemon = $this->settings->get(CronHelper::DAEMON_SETTING); expect($updated_daemon['run_started_at'])->greaterOrEquals($now); expect($updated_daemon['run_started_at'])->lessThan($now + 2); expect($updated_daemon['run_completed_at'])->greaterOrEquals($now + 2); @@ -213,7 +223,7 @@ class DaemonHttpRunnerTest extends \MailPoetTest { $data = array( 'token' => 123 ); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon->__construct(Stub::makeEmptyExcept(Daemon::class, 'run')); $daemon->run($data); expect(ignore_user_abort())->equals(1); diff --git a/tests/integration/Cron/DaemonTest.php b/tests/integration/Cron/DaemonTest.php index 0e0cee380c..3401c3fa43 100644 --- a/tests/integration/Cron/DaemonTest.php +++ b/tests/integration/Cron/DaemonTest.php @@ -9,9 +9,18 @@ use MailPoet\Cron\Daemon; use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler; use MailPoet\Cron\Workers\WorkersFactory; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; class DaemonTest extends \MailPoetTest { + /** @var SettingsController */ + private $settings; + + public function _before() { + parent::_before(); + $this->settings = new SettingsController(); + } + function testItCanExecuteWorkers() { $daemon = Stub::make(Daemon::class, array( 'executeScheduleWorker' => Expected::exactly(1), @@ -25,7 +34,7 @@ class DaemonTest extends \MailPoetTest { $data = array( 'token' => 123 ); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon->run([]); } @@ -43,7 +52,7 @@ class DaemonTest extends \MailPoetTest { $data = array( 'token' => 123 ); - Setting::setValue(CronHelper::DAEMON_SETTING, $data); + $this->settings->set(CronHelper::DAEMON_SETTING, $data); $daemon->run($data); } diff --git a/tests/integration/Cron/SupervisorTest.php b/tests/integration/Cron/SupervisorTest.php index 51017a7991..888c534590 100644 --- a/tests/integration/Cron/SupervisorTest.php +++ b/tests/integration/Cron/SupervisorTest.php @@ -4,15 +4,20 @@ namespace MailPoet\Test\Cron; use MailPoet\Cron\CronHelper; use MailPoet\Cron\Supervisor; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; class SupervisorTest extends \MailPoetTest { + /** @var SettingsController */ + private $settings; + function _before() { parent::_before(); // cron trigger is by default set to 'WordPress'; when it runs and does not // detect any queues to process, it deletes the daemon setting, so Supervisor and // CronHelper's getDaemon() methods do not work. for that matter, we need to set // the trigger setting to anything but 'WordPress'. - Setting::setValue('cron_trigger', array( + $this->settings = new SettingsController(); + $this->settings->set('cron_trigger', array( 'method' => 'none' )); } @@ -26,7 +31,7 @@ class SupervisorTest extends \MailPoetTest { function testItCreatesDaemonWhenOneDoesNotExist() { if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return; - expect(Setting::getValue(CronHelper::DAEMON_SETTING))->null(); + expect($this->settings->get(CronHelper::DAEMON_SETTING))->null(); $supervisor = new Supervisor(); expect($supervisor->getDaemon())->notEmpty(); } @@ -66,4 +71,4 @@ class SupervisorTest extends \MailPoetTest { function _after() { \ORM::raw_execute('TRUNCATE ' . Setting::$_table); } -} \ No newline at end of file +} diff --git a/tests/integration/Cron/Triggers/MailPoetTest.php b/tests/integration/Cron/Triggers/MailPoetTest.php index 745cf63769..7a81afb9cc 100644 --- a/tests/integration/Cron/Triggers/MailPoetTest.php +++ b/tests/integration/Cron/Triggers/MailPoetTest.php @@ -5,26 +5,31 @@ use MailPoet\API\JSON\Endpoints\Cron; use MailPoet\Cron\CronHelper; use MailPoet\Cron\Triggers\MailPoet; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; class MailPoetTest extends \MailPoetTest { + /** @var SettingsController */ + private $settings; + function _before() { parent::_before(); // cron trigger is by default set to 'WordPress'; when it runs and does not // detect any queues to process, it deletes the daemon setting, so Supervisor that's // called by the MailPoet cron trigger does not work. for that matter, we need to set // the trigger setting to anything but 'WordPress'. - Setting::setValue('cron_trigger', array( + $this->settings = new SettingsController(); + $this->settings->set('cron_trigger', array( 'method' => 'none' )); } function testItCanRun() { - expect(Setting::getValue(CronHelper::DAEMON_SETTING))->null(); + expect($this->settings->get(CronHelper::DAEMON_SETTING))->null(); MailPoet::run(); - expect(Setting::getValue(CronHelper::DAEMON_SETTING))->notEmpty(); + expect($this->settings->get(CronHelper::DAEMON_SETTING))->notEmpty(); } function _after() { \ORM::raw_execute('TRUNCATE ' . Setting::$_table); } -} \ No newline at end of file +} diff --git a/tests/integration/Cron/Triggers/WordPressTest.php b/tests/integration/Cron/Triggers/WordPressTest.php index ce2736ea82..f41250e221 100644 --- a/tests/integration/Cron/Triggers/WordPressTest.php +++ b/tests/integration/Cron/Triggers/WordPressTest.php @@ -10,17 +10,23 @@ use MailPoet\Mailer\MailerLog; use MailPoet\Models\ScheduledTask; use MailPoet\Models\SendingQueue; use MailPoet\Models\Setting; +use MailPoet\Settings\SettingsController; use MailPoet\Tasks\Sending as SendingTask; use MailPoet\Cron\Workers\SendingQueue\Migration as MigrationWorker; class WordPressTest extends \MailPoetTest { + + /** @var SettingsController */ + private $settings; + function _before() { parent::_before(); // cron trigger is by default set to 'WordPress'; when it runs and does not // detect any queues to process, it deletes the daemon setting, so Supervisor that's // called by the MailPoet cron trigger does not work. for that matter, we need to set // the trigger setting to anything but 'WordPress'. - Setting::setValue('cron_trigger', array( + $this->settings = new SettingsController(); + $this->settings->set('cron_trigger', array( 'method' => 'none' )); } @@ -79,26 +85,26 @@ class WordPressTest extends \MailPoetTest { } function testItCanDeactivateRunningDaemon() { - Setting::setValue(CronHelper::DAEMON_SETTING, ['status' => CronHelper::DAEMON_STATUS_ACTIVE]); - expect(Setting::getValue(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_ACTIVE); + $this->settings->set(CronHelper::DAEMON_SETTING, ['status' => CronHelper::DAEMON_STATUS_ACTIVE]); + expect($this->settings->get(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_ACTIVE); WordPress::stop(); - expect(Setting::getValue(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_INACTIVE); + expect($this->settings->get(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_INACTIVE); } function testItRunsWhenExecutionRequirementsAreMet() { // status of 'null' indicates that queue is running $this->_addQueue($status = null); // check that cron daemon does not exist - expect(Setting::getValue(CronHelper::DAEMON_SETTING))->null(); + expect($this->settings->get(CronHelper::DAEMON_SETTING))->null(); WordPress::run(); - expect(Setting::getValue(CronHelper::DAEMON_SETTING))->notNull(); + expect($this->settings->get(CronHelper::DAEMON_SETTING))->notNull(); } function testItDeactivatesCronDaemonWhenExecutionRequirementsAreNotMet() { - Setting::setValue(CronHelper::DAEMON_SETTING, ['status' => CronHelper::DAEMON_STATUS_ACTIVE]); - expect(Setting::getValue(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_ACTIVE); + $this->settings->set(CronHelper::DAEMON_SETTING, ['status' => CronHelper::DAEMON_STATUS_ACTIVE]); + expect($this->settings->get(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_ACTIVE); WordPress::run(); - expect(Setting::getValue(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_INACTIVE); + expect($this->settings->get(CronHelper::DAEMON_SETTING)['status'])->equals(CronHelper::DAEMON_STATUS_INACTIVE); } function _addMTAConfigAndLog($sent, $status = null) { @@ -108,7 +114,7 @@ class WordPressTest extends \MailPoetTest { 'interval' => 1 ) ); - Setting::setValue( + $this->settings->set( Mailer::MAILER_CONFIG_SETTING_NAME, $mta_config ); @@ -117,7 +123,7 @@ class WordPressTest extends \MailPoetTest { 'started' => time(), 'status' => $status ); - Setting::setValue( + $this->settings->set( MailerLog::SETTING_NAME, $mta_log ); @@ -154,7 +160,7 @@ class WordPressTest extends \MailPoetTest { function _enableMigration() { // Migration can be triggered only if cron execution method is selected // and is not "none" - Setting::setValue('cron_trigger', array( + $this->settings->set('cron_trigger', array( 'method' => 'WordPress' )); } diff --git a/tests/integration/Cron/Workers/BounceTest.php b/tests/integration/Cron/Workers/BounceTest.php index c4a896fde4..e4f19c1103 100644 --- a/tests/integration/Cron/Workers/BounceTest.php +++ b/tests/integration/Cron/Workers/BounceTest.php @@ -12,6 +12,7 @@ use MailPoet\Services\Bridge\API; require_once('BounceTestMockAPI.php'); use MailPoet\Cron\Workers\Bounce\BounceTestMockAPI as MockAPI; +use MailPoet\Settings\SettingsController; class BounceTest extends \MailPoetTest { function _before() { @@ -98,7 +99,8 @@ class BounceTest extends \MailPoetTest { } private function setMailPoetSendingMethod() { - Setting::setValue( + $settings = new SettingsController(); + $settings->set( Mailer::MAILER_CONFIG_SETTING_NAME, array( 'method' => 'MailPoet', diff --git a/tests/integration/Cron/Workers/KeyCheck/PremiumKeyCheckTest.php b/tests/integration/Cron/Workers/KeyCheck/PremiumKeyCheckTest.php index a4c25d73ae..aecc99e788 100644 --- a/tests/integration/Cron/Workers/KeyCheck/PremiumKeyCheckTest.php +++ b/tests/integration/Cron/Workers/KeyCheck/PremiumKeyCheckTest.php @@ -5,12 +5,18 @@ use Codeception\Util\Stub; use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck; use MailPoet\Models\Setting; use MailPoet\Services\Bridge; +use MailPoet\Settings\SettingsController; class PremiumKeyCheckTest extends \MailPoetTest { + + /** @var SettingsController */ + private $settings; + function _before() { parent::_before(); + $this->settings = new SettingsController(); $this->premium_key = '123457890abcdef'; - $this->worker = new PremiumKeyCheck(microtime(true)); + $this->worker = new PremiumKeyCheck($this->settings, microtime(true)); } function testItRequiresPremiumKeyToBeSpecified() { @@ -43,7 +49,7 @@ class PremiumKeyCheckTest extends \MailPoetTest { } private function fillPremiumKey() { - Setting::setValue( + $this->settings->set( Bridge::PREMIUM_KEY_SETTING_NAME, $this->premium_key ); @@ -52,4 +58,4 @@ class PremiumKeyCheckTest extends \MailPoetTest { function _after() { \ORM::raw_execute('TRUNCATE ' . Setting::$_table); } -} \ No newline at end of file +} diff --git a/tests/integration/Cron/Workers/KeyCheck/SendingServiceKeyCheckTest.php b/tests/integration/Cron/Workers/KeyCheck/SendingServiceKeyCheckTest.php index 33eb5b23f9..6e55b92564 100644 --- a/tests/integration/Cron/Workers/KeyCheck/SendingServiceKeyCheckTest.php +++ b/tests/integration/Cron/Workers/KeyCheck/SendingServiceKeyCheckTest.php @@ -7,6 +7,7 @@ use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck; use MailPoet\Mailer\Mailer; use MailPoet\Models\Setting; use MailPoet\Services\Bridge; +use MailPoet\Settings\SettingsController; class SendingServiceKeyCheckTest extends \MailPoetTest { function _before() { @@ -46,7 +47,8 @@ class SendingServiceKeyCheckTest extends \MailPoetTest { } private function setMailPoetSendingMethod() { - Setting::setValue( + $settings = new SettingsController(); + $settings->set( Mailer::MAILER_CONFIG_SETTING_NAME, array( 'method' => 'MailPoet', @@ -58,4 +60,4 @@ class SendingServiceKeyCheckTest extends \MailPoetTest { function _after() { \ORM::raw_execute('TRUNCATE ' . Setting::$_table); } -} \ No newline at end of file +} diff --git a/tests/integration/Cron/Workers/SendingQueue/SendingQueueTest.php b/tests/integration/Cron/Workers/SendingQueue/SendingQueueTest.php index 8a205edbbd..a8a7facfa7 100644 --- a/tests/integration/Cron/Workers/SendingQueue/SendingQueueTest.php +++ b/tests/integration/Cron/Workers/SendingQueue/SendingQueueTest.php @@ -29,6 +29,7 @@ use MailPoet\Models\SubscriberSegment; use MailPoet\Newsletter\Links\Links; use MailPoet\Router\Endpoints\Track; use MailPoet\Router\Router; +use MailPoet\Settings\SettingsController; use MailPoet\Subscription\Url; use MailPoet\Tasks\Sending as SendingTask; use MailPoet\WP\Functions as WPFunctions; @@ -36,7 +37,8 @@ use MailPoet\WP\Functions as WPFunctions; class SendingQueueTest extends \MailPoetTest { /** @var SendingErrorHandler */ private $sending_error_handler; - + /** @var SettingsController */ + private $settings; /** @var Scheduler */ private $stats_notifications_worker; @@ -83,6 +85,7 @@ class SendingQueueTest extends \MailPoetTest { $this->sending_error_handler = new SendingErrorHandler(); $this->stats_notifications_worker = new StatsNotificationsScheduler(); $this->sending_queue_worker = new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker); + $this->settings = new SettingsController(); } private function getDirectUnsubscribeURL() { @@ -229,7 +232,7 @@ class SendingQueueTest extends \MailPoetTest { } function testItPassesExtraParametersToMailerWhenTrackingIsDisabled() { - Setting::setValue('tracking.enabled', false); + $this->settings->set('tracking.enabled', false); $directUnsubscribeURL = $this->getDirectUnsubscribeURL(); $sending_queue_worker = new SendingQueueWorker( $this->sending_error_handler, @@ -251,7 +254,7 @@ class SendingQueueTest extends \MailPoetTest { } function testItPassesExtraParametersToMailerWhenTrackingIsEnabled() { - Setting::setValue('tracking.enabled', true); + $this->settings->set('tracking.enabled', true); $trackedUnsubscribeURL = $this->getTrackedUnsubscribeURL(); $sending_queue_worker = new SendingQueueWorker( $this->sending_error_handler, @@ -680,6 +683,7 @@ class SendingQueueTest extends \MailPoetTest { \ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table); \ORM::raw_execute('TRUNCATE ' . Segment::$_table); \ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table); + \ORM::raw_execute('TRUNCATE ' . Setting::$_table); \ORM::raw_execute('TRUNCATE ' . Newsletter::$_table); \ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table); \ORM::raw_execute('TRUNCATE ' . NewsletterPost::$_table); diff --git a/tests/integration/Cron/Workers/SendingQueue/Tasks/MailerTest.php b/tests/integration/Cron/Workers/SendingQueue/Tasks/MailerTest.php index 340287ee01..2b885b8976 100644 --- a/tests/integration/Cron/Workers/SendingQueue/Tasks/MailerTest.php +++ b/tests/integration/Cron/Workers/SendingQueue/Tasks/MailerTest.php @@ -8,6 +8,7 @@ use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask; use MailPoet\Mailer\Mailer; use MailPoet\Models\Setting; use MailPoet\Models\Subscriber; +use MailPoet\Settings\SettingsController; if(!defined('ABSPATH')) exit; @@ -15,6 +16,8 @@ class MailerTest extends \MailPoetTest { /** @var MailerTask */ public $mailer_task; public $sender; + /** @var SettingsController */ + private $settings; function _before() { parent::_before(); @@ -23,7 +26,8 @@ class MailerTest extends \MailPoetTest { $populator = new Populator(); $populator->up(); $this->mailer_task = new MailerTask(); - $this->sender = Setting::getValue('sender'); + $this->settings = new SettingsController(); + $this->sender = $this->settings->get('sender'); } function testConfiguresMailerWhenItConstructs() { @@ -68,7 +72,7 @@ class MailerTest extends \MailPoetTest { function testItGetsProcessingMethod() { // when using MailPoet method, newsletters should be processed in bulk - Setting::setValue( + $this->settings->set( Mailer::MAILER_CONFIG_SETTING_NAME, array( 'method' => 'MailPoet', @@ -79,7 +83,7 @@ class MailerTest extends \MailPoetTest { expect($mailer_task->getProcessingMethod())->equals('bulk'); // when using other methods, newsletters should be processed individually - Setting::setValue( + $this->settings->set( Mailer::MAILER_CONFIG_SETTING_NAME, array( 'method' => 'PHPMail' @@ -101,7 +105,7 @@ class MailerTest extends \MailPoetTest { function testItCanSend() { $php_mail_class = 'MailPoet\Mailer\Methods\PHPMail'; - Setting::setValue( + $this->settings->set( Mailer::MAILER_CONFIG_SETTING_NAME, array( 'method' => 'PHPMail'