Refactor MailPoet\Cron to use new settings

[MAILPOET-1757]
This commit is contained in:
Rostislav Wolny
2019-01-30 13:57:18 +01:00
parent 6e79705128
commit ff238bf69a
21 changed files with 174 additions and 86 deletions

View File

@ -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();
}
}

View File

@ -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
);

View File

@ -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');
}
}

View File

@ -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();

View File

@ -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;

View File

@ -1,6 +1,7 @@
<?php
namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
use MailPoet\Settings\SettingsController;
use MailPoet\Util\Helpers;
use MailPoet\Router\Router;
use MailPoet\Models\Setting;
@ -39,8 +40,8 @@ class Links {
static function getUnsubscribeUrl($queue, $subscriber_id) {
$subscriber = Subscriber::where('id', $subscriber_id)->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()

View File

@ -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;
}

View File

@ -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 */

View File

@ -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);

View File

@ -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
);

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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();
}

View File

@ -5,23 +5,28 @@ 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() {

View File

@ -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'
));
}

View File

@ -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',

View File

@ -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
);

View File

@ -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',

View File

@ -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);

View File

@ -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'