Refactor MailPoet\Cron to use new settings
[MAILPOET-1757]
This commit is contained in:
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
);
|
||||
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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'
|
||||
));
|
||||
}
|
||||
|
@ -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',
|
||||
|
@ -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
|
||||
);
|
||||
|
@ -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',
|
||||
|
@ -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);
|
||||
|
@ -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'
|
||||
|
Reference in New Issue
Block a user