Refactor Cron to use logger_factory instance
[MAILPOET-2444]
This commit is contained in:
committed by
Jack Kitterhing
parent
9fbaa92c9b
commit
e4262b0a6d
@ -15,6 +15,7 @@ use MailPoet\Newsletter\Scheduler\Scheduler as NewsletterScheduler;
|
|||||||
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||||
use MailPoet\Segments\SubscribersFinder;
|
use MailPoet\Segments\SubscribersFinder;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
|
use MailPoetVendor\Monolog\Logger;
|
||||||
|
|
||||||
class Scheduler {
|
class Scheduler {
|
||||||
const TASK_BATCH_SIZE = 5;
|
const TASK_BATCH_SIZE = 5;
|
||||||
@ -24,11 +25,15 @@ class Scheduler {
|
|||||||
/** @var SubscribersFinder */
|
/** @var SubscribersFinder */
|
||||||
private $subscribers_finder;
|
private $subscribers_finder;
|
||||||
|
|
||||||
function __construct(SubscribersFinder $subscribers_finder, $timer = false) {
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
|
function __construct(SubscribersFinder $subscribers_finder, LoggerFactory $logger_factory, $timer = false) {
|
||||||
$this->timer = ($timer) ? $timer : microtime(true);
|
$this->timer = ($timer) ? $timer : microtime(true);
|
||||||
// abort if execution limit is reached
|
// abort if execution limit is reached
|
||||||
CronHelper::enforceExecutionLimit($this->timer);
|
CronHelper::enforceExecutionLimit($this->timer);
|
||||||
$this->subscribers_finder = $subscribers_finder;
|
$this->subscribers_finder = $subscribers_finder;
|
||||||
|
$this->logger_factory = $logger_factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
function process() {
|
function process() {
|
||||||
@ -78,14 +83,14 @@ class Scheduler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function processPostNotificationNewsletter($newsletter, $queue) {
|
function processPostNotificationNewsletter($newsletter, $queue) {
|
||||||
LoggerFactory::getLogger('post-notifications')->addInfo(
|
$this->logger_factory->getLogger('post-notifications')->addInfo(
|
||||||
'process post notification in scheduler',
|
'process post notification in scheduler',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
// ensure that segments exist
|
// ensure that segments exist
|
||||||
$segments = $newsletter->segments()->findMany();
|
$segments = $newsletter->segments()->findMany();
|
||||||
if (empty($segments)) {
|
if (empty($segments)) {
|
||||||
LoggerFactory::getLogger('post-notifications')->addInfo(
|
$this->logger_factory->getLogger('post-notifications')->addInfo(
|
||||||
'post notification no segments',
|
'post notification no segments',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
@ -97,7 +102,7 @@ class Scheduler {
|
|||||||
$subscribers_count = $this->subscribers_finder->addSubscribersToTaskFromSegments($queue->task(), $segments);
|
$subscribers_count = $this->subscribers_finder->addSubscribersToTaskFromSegments($queue->task(), $segments);
|
||||||
|
|
||||||
if (empty($subscribers_count)) {
|
if (empty($subscribers_count)) {
|
||||||
LoggerFactory::getLogger('post-notifications')->addInfo(
|
$this->logger_factory->getLogger('post-notifications')->addInfo(
|
||||||
'post notification no subscribers',
|
'post notification no subscribers',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
@ -114,7 +119,7 @@ class Scheduler {
|
|||||||
$queue->save();
|
$queue->save();
|
||||||
// update notification status
|
// update notification status
|
||||||
$notification_history->setStatus(Newsletter::STATUS_SENDING);
|
$notification_history->setStatus(Newsletter::STATUS_SENDING);
|
||||||
LoggerFactory::getLogger('post-notifications')->addInfo(
|
$this->logger_factory->getLogger('post-notifications')->addInfo(
|
||||||
'post notification set status to sending',
|
'post notification set status to sending',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
|
@ -38,7 +38,17 @@ class SendingQueue {
|
|||||||
/** @var MetaInfo */
|
/** @var MetaInfo */
|
||||||
private $mailerMetaInfo;
|
private $mailerMetaInfo;
|
||||||
|
|
||||||
function __construct(SendingErrorHandler $error_handler, StatsNotificationsScheduler $stats_notifications_scheduler, $timer = false, $mailer_task = false, $newsletter_task = false) {
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
|
function __construct(
|
||||||
|
SendingErrorHandler $error_handler,
|
||||||
|
StatsNotificationsScheduler $stats_notifications_scheduler,
|
||||||
|
LoggerFactory $logger_factory,
|
||||||
|
$timer = false,
|
||||||
|
$mailer_task = false,
|
||||||
|
$newsletter_task = false
|
||||||
|
) {
|
||||||
$this->error_handler = $error_handler;
|
$this->error_handler = $error_handler;
|
||||||
$this->stats_notifications_scheduler = $stats_notifications_scheduler;
|
$this->stats_notifications_scheduler = $stats_notifications_scheduler;
|
||||||
$this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
|
$this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
|
||||||
@ -47,6 +57,7 @@ class SendingQueue {
|
|||||||
$this->mailerMetaInfo = new MetaInfo;
|
$this->mailerMetaInfo = new MetaInfo;
|
||||||
$wp = new WPFunctions;
|
$wp = new WPFunctions;
|
||||||
$this->batch_size = $wp->applyFilters('mailpoet_cron_worker_sending_queue_batch_size', self::BATCH_SIZE);
|
$this->batch_size = $wp->applyFilters('mailpoet_cron_worker_sending_queue_batch_size', self::BATCH_SIZE);
|
||||||
|
$this->logger_factory = $logger_factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
function process() {
|
function process() {
|
||||||
@ -55,7 +66,7 @@ class SendingQueue {
|
|||||||
if (!$queue instanceof SendingTask) continue;
|
if (!$queue instanceof SendingTask) continue;
|
||||||
ScheduledTaskModel::touchAllByIds([$queue->task_id]);
|
ScheduledTaskModel::touchAllByIds([$queue->task_id]);
|
||||||
|
|
||||||
LoggerFactory::getLogger('newsletters')->addInfo(
|
$this->logger_factory->getLogger('newsletters')->addInfo(
|
||||||
'sending queue processing',
|
'sending queue processing',
|
||||||
['task_id' => $queue->task_id]
|
['task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
@ -66,7 +77,7 @@ class SendingQueue {
|
|||||||
// pre-process newsletter (render, replace shortcodes/links, etc.)
|
// pre-process newsletter (render, replace shortcodes/links, etc.)
|
||||||
$newsletter = $this->newsletter_task->preProcessNewsletter($newsletter, $queue);
|
$newsletter = $this->newsletter_task->preProcessNewsletter($newsletter, $queue);
|
||||||
if (!$newsletter) {
|
if (!$newsletter) {
|
||||||
LoggerFactory::getLogger('newsletters')->addInfo(
|
$this->logger_factory->getLogger('newsletters')->addInfo(
|
||||||
'delete task in sending queue',
|
'delete task in sending queue',
|
||||||
['task_id' => $queue->task_id]
|
['task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
@ -87,7 +98,7 @@ class SendingQueue {
|
|||||||
// get subscribers
|
// get subscribers
|
||||||
$subscriber_batches = new BatchIterator($queue->task_id, $this->batch_size);
|
$subscriber_batches = new BatchIterator($queue->task_id, $this->batch_size);
|
||||||
foreach ($subscriber_batches as $subscribers_to_process_ids) {
|
foreach ($subscriber_batches as $subscribers_to_process_ids) {
|
||||||
LoggerFactory::getLogger('newsletters')->addInfo(
|
$this->logger_factory->getLogger('newsletters')->addInfo(
|
||||||
'subscriber batch processing',
|
'subscriber batch processing',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id, 'subscriber_batch_count' => count($subscribers_to_process_ids)]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id, 'subscriber_batch_count' => count($subscribers_to_process_ids)]
|
||||||
);
|
);
|
||||||
@ -118,7 +129,7 @@ class SendingQueue {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LoggerFactory::getLogger('newsletters')->addInfo(
|
$this->logger_factory->getLogger('newsletters')->addInfo(
|
||||||
'before queue chunk processing',
|
'before queue chunk processing',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id, 'found_subscribers_count' => count($found_subscribers)]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id, 'found_subscribers_count' => count($found_subscribers)]
|
||||||
);
|
);
|
||||||
@ -127,12 +138,12 @@ class SendingQueue {
|
|||||||
$_newsletter,
|
$_newsletter,
|
||||||
$found_subscribers
|
$found_subscribers
|
||||||
);
|
);
|
||||||
LoggerFactory::getLogger('newsletters')->addInfo(
|
$this->logger_factory->getLogger('newsletters')->addInfo(
|
||||||
'after queue chunk processing',
|
'after queue chunk processing',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
if ($queue->status === ScheduledTaskModel::STATUS_COMPLETED) {
|
if ($queue->status === ScheduledTaskModel::STATUS_COMPLETED) {
|
||||||
LoggerFactory::getLogger('newsletters')->addInfo(
|
$this->logger_factory->getLogger('newsletters')->addInfo(
|
||||||
'completed newsletter sending',
|
'completed newsletter sending',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
);
|
);
|
||||||
|
@ -26,6 +26,9 @@ class Newsletter {
|
|||||||
/** @var PostsTask */
|
/** @var PostsTask */
|
||||||
private $posts_task;
|
private $posts_task;
|
||||||
|
|
||||||
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
function __construct(WPFunctions $wp = null, PostsTask $posts_task = null) {
|
function __construct(WPFunctions $wp = null, PostsTask $posts_task = null) {
|
||||||
$settings = new SettingsController();
|
$settings = new SettingsController();
|
||||||
$this->tracking_enabled = (boolean)$settings->get('tracking.enabled');
|
$this->tracking_enabled = (boolean)$settings->get('tracking.enabled');
|
||||||
@ -37,6 +40,7 @@ class Newsletter {
|
|||||||
$posts_task = new PostsTask;
|
$posts_task = new PostsTask;
|
||||||
}
|
}
|
||||||
$this->posts_task = $posts_task;
|
$this->posts_task = $posts_task;
|
||||||
|
$this->logger_factory = LoggerFactory::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNewsletterFromQueue($queue) {
|
function getNewsletterFromQueue($queue) {
|
||||||
@ -74,7 +78,7 @@ class Newsletter {
|
|||||||
$this->stopNewsletterPreProcessing(sprintf('QUEUE-%d-RENDER', $sending_task->id)) :
|
$this->stopNewsletterPreProcessing(sprintf('QUEUE-%d-RENDER', $sending_task->id)) :
|
||||||
$newsletter;
|
$newsletter;
|
||||||
}
|
}
|
||||||
LoggerFactory::getLogger('newsletters')->addInfo(
|
$this->logger_factory->getLogger('newsletters')->addInfo(
|
||||||
'pre-processing newsletter',
|
'pre-processing newsletter',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $sending_task->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $sending_task->task_id]
|
||||||
);
|
);
|
||||||
@ -105,7 +109,7 @@ class Newsletter {
|
|||||||
$this->posts_task->getAlcPostsCount($rendered_newsletter, $newsletter) === 0
|
$this->posts_task->getAlcPostsCount($rendered_newsletter, $newsletter) === 0
|
||||||
) {
|
) {
|
||||||
// delete notification history record since it will never be sent
|
// delete notification history record since it will never be sent
|
||||||
LoggerFactory::getLogger('post-notifications')->addInfo(
|
$this->logger_factory->getLogger('post-notifications')->addInfo(
|
||||||
'no posts in post notification, deleting it',
|
'no posts in post notification, deleting it',
|
||||||
['newsletter_id' => $newsletter->id, 'task_id' => $sending_task->task_id]
|
['newsletter_id' => $newsletter->id, 'task_id' => $sending_task->task_id]
|
||||||
);
|
);
|
||||||
|
@ -7,11 +7,18 @@ use MailPoet\Models\Newsletter as NewsletterModel;
|
|||||||
use MailPoet\Models\NewsletterPost;
|
use MailPoet\Models\NewsletterPost;
|
||||||
|
|
||||||
class Posts {
|
class Posts {
|
||||||
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
$this->logger_factory = LoggerFactory::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
function extractAndSave($rendered_newsletter, $newsletter) {
|
function extractAndSave($rendered_newsletter, $newsletter) {
|
||||||
if ($newsletter->type !== NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
|
if ($newsletter->type !== NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
LoggerFactory::getLogger('post-notifications')->addInfo(
|
$this->logger_factory->getLogger('post-notifications')->addInfo(
|
||||||
'extract and save posts - before',
|
'extract and save posts - before',
|
||||||
['newsletter_id' => $newsletter->id]
|
['newsletter_id' => $newsletter->id]
|
||||||
);
|
);
|
||||||
@ -30,7 +37,7 @@ class Posts {
|
|||||||
$newsletter_post->post_id = $post_id;
|
$newsletter_post->post_id = $post_id;
|
||||||
$newsletter_post->save();
|
$newsletter_post->save();
|
||||||
}
|
}
|
||||||
LoggerFactory::getLogger('post-notifications')->addInfo(
|
$this->logger_factory->getLogger('post-notifications')->addInfo(
|
||||||
'extract and save posts - after',
|
'extract and save posts - after',
|
||||||
['newsletter_id' => $newsletter->id, 'matched_posts_ids' => $matched_posts_ids]
|
['newsletter_id' => $newsletter->id, 'matched_posts_ids' => $matched_posts_ids]
|
||||||
);
|
);
|
||||||
|
@ -14,6 +14,7 @@ use MailPoet\Cron\Workers\StatsNotifications\AutomatedEmails as StatsNotificatio
|
|||||||
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationScheduler;
|
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationScheduler;
|
||||||
use MailPoet\Cron\Workers\StatsNotifications\Worker as StatsNotificationsWorker;
|
use MailPoet\Cron\Workers\StatsNotifications\Worker as StatsNotificationsWorker;
|
||||||
use MailPoet\Cron\Workers\WooCommerceSync as WooCommerceSyncWorker;
|
use MailPoet\Cron\Workers\WooCommerceSync as WooCommerceSyncWorker;
|
||||||
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Mailer\Mailer;
|
use MailPoet\Mailer\Mailer;
|
||||||
use MailPoet\Mailer\MetaInfo;
|
use MailPoet\Mailer\MetaInfo;
|
||||||
use MailPoet\Segments\SubscribersFinder;
|
use MailPoet\Segments\SubscribersFinder;
|
||||||
@ -65,6 +66,9 @@ class WorkersFactory {
|
|||||||
/** @var MetaInfo */
|
/** @var MetaInfo */
|
||||||
private $mailerMetaInfo;
|
private $mailerMetaInfo;
|
||||||
|
|
||||||
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
SendingErrorHandler $sending_error_handler,
|
SendingErrorHandler $sending_error_handler,
|
||||||
StatsNotificationScheduler $statsNotificationsScheduler,
|
StatsNotificationScheduler $statsNotificationsScheduler,
|
||||||
@ -77,7 +81,8 @@ class WorkersFactory {
|
|||||||
WooCommercePurchases $woocommerce_purchases,
|
WooCommercePurchases $woocommerce_purchases,
|
||||||
AuthorizedEmailsController $authorized_emails_controller,
|
AuthorizedEmailsController $authorized_emails_controller,
|
||||||
SubscribersFinder $subscribers_finder,
|
SubscribersFinder $subscribers_finder,
|
||||||
MetaInfo $mailerMetaInfo
|
MetaInfo $mailerMetaInfo,
|
||||||
|
LoggerFactory $logger_factory
|
||||||
) {
|
) {
|
||||||
$this->sending_error_handler = $sending_error_handler;
|
$this->sending_error_handler = $sending_error_handler;
|
||||||
$this->statsNotificationsScheduler = $statsNotificationsScheduler;
|
$this->statsNotificationsScheduler = $statsNotificationsScheduler;
|
||||||
@ -91,16 +96,17 @@ class WorkersFactory {
|
|||||||
$this->authorized_emails_controller = $authorized_emails_controller;
|
$this->authorized_emails_controller = $authorized_emails_controller;
|
||||||
$this->subscribers_finder = $subscribers_finder;
|
$this->subscribers_finder = $subscribers_finder;
|
||||||
$this->mailerMetaInfo = $mailerMetaInfo;
|
$this->mailerMetaInfo = $mailerMetaInfo;
|
||||||
|
$this->logger_factory = $logger_factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return SchedulerWorker */
|
/** @return SchedulerWorker */
|
||||||
function createScheduleWorker($timer) {
|
function createScheduleWorker($timer) {
|
||||||
return new SchedulerWorker($this->subscribers_finder, $timer);
|
return new SchedulerWorker($this->subscribers_finder, $this->logger_factory, $timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return SendingQueueWorker */
|
/** @return SendingQueueWorker */
|
||||||
function createQueueWorker($timer) {
|
function createQueueWorker($timer) {
|
||||||
return new SendingQueueWorker($this->sending_error_handler, $this->statsNotificationsScheduler, $timer);
|
return new SendingQueueWorker($this->sending_error_handler, $this->statsNotificationsScheduler, $this->logger_factory, $timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return StatsNotificationsWorker */
|
/** @return StatsNotificationsWorker */
|
||||||
|
@ -7,6 +7,7 @@ use Codeception\Stub;
|
|||||||
use Codeception\Stub\Expected;
|
use Codeception\Stub\Expected;
|
||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
use MailPoet\Cron\Workers\Scheduler;
|
use MailPoet\Cron\Workers\Scheduler;
|
||||||
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterOption;
|
use MailPoet\Models\NewsletterOption;
|
||||||
use MailPoet\Models\NewsletterOptionField;
|
use MailPoet\Models\NewsletterOptionField;
|
||||||
@ -23,17 +24,25 @@ use MailPoet\Segments\SubscribersFinder;
|
|||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
|
|
||||||
class SchedulerTest extends \MailPoetTest {
|
class SchedulerTest extends \MailPoetTest {
|
||||||
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
|
function _before() {
|
||||||
|
parent::_before();
|
||||||
|
$this->logger_factory = LoggerFactory::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
function testItConstructs() {
|
function testItConstructs() {
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
expect($scheduler->timer)->greaterOrEquals(5);
|
expect($scheduler->timer)->greaterOrEquals(5);
|
||||||
$timer = microtime(true) - 2;
|
$timer = microtime(true) - 2;
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $timer);
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory, $timer);
|
||||||
expect($scheduler->timer)->equals($timer);
|
expect($scheduler->timer)->equals($timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItThrowsExceptionWhenExecutionLimitIsReached() {
|
function testItThrowsExceptionWhenExecutionLimitIsReached() {
|
||||||
try {
|
try {
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), microtime(true) - CronHelper::getDaemonExecutionLimit());
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory, microtime(true) - CronHelper::getDaemonExecutionLimit());
|
||||||
self::fail('Maximum execution time limit exception was not thrown.');
|
self::fail('Maximum execution time limit exception was not thrown.');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
expect($e->getMessage())->equals('Maximum execution time has been reached.');
|
expect($e->getMessage())->equals('Maximum execution time has been reached.');
|
||||||
@ -62,7 +71,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
expect($notification_history)->isEmpty();
|
expect($notification_history)->isEmpty();
|
||||||
|
|
||||||
// create notification history and ensure that it exists
|
// create notification history and ensure that it exists
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$scheduler->createNotificationHistory($newsletter->id);
|
$scheduler->createNotificationHistory($newsletter->id);
|
||||||
$notification_history = Newsletter::where('type', Newsletter::TYPE_NOTIFICATION_HISTORY)
|
$notification_history = Newsletter::where('type', Newsletter::TYPE_NOTIFICATION_HISTORY)
|
||||||
->where('parent_id', $newsletter->id)
|
->where('parent_id', $newsletter->id)
|
||||||
@ -78,7 +87,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// queue and associated newsletter should be deleted when interval type is set to "immediately"
|
// queue and associated newsletter should be deleted when interval type is set to "immediately"
|
||||||
expect(SendingQueue::findMany())->notEmpty();
|
expect(SendingQueue::findMany())->notEmpty();
|
||||||
@ -94,7 +103,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// queue's next run date should change when interval type is set to anything
|
// queue's next run date should change when interval type is set to anything
|
||||||
// other than "immediately"
|
// other than "immediately"
|
||||||
@ -124,7 +133,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// return false and delete queue when subscriber is not a WP user
|
// return false and delete queue when subscriber is not a WP user
|
||||||
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
@ -147,7 +156,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// return false and delete queue when subscriber role is different from the one
|
// return false and delete queue when subscriber role is different from the one
|
||||||
// specified for the welcome email
|
// specified for the welcome email
|
||||||
@ -169,7 +178,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// return true when user exists and WP role matches the one specified for the welcome email
|
// return true when user exists and WP role matches the one specified for the welcome email
|
||||||
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
@ -190,7 +199,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// true when user exists and has any role
|
// true when user exists and has any role
|
||||||
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
@ -204,7 +213,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$queue->setSubscribers([]);
|
$queue->setSubscribers([]);
|
||||||
|
|
||||||
// delete queue when the list of subscribers to process is blank
|
// delete queue when the list of subscribers to process is blank
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$result = $scheduler->processWelcomeNewsletter($newsletter, $queue);
|
$result = $scheduler->processWelcomeNewsletter($newsletter, $queue);
|
||||||
expect($result)->false();
|
expect($result)->false();
|
||||||
expect(SendingQueue::findMany())->count(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
@ -274,7 +283,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItFailsMailpoetSubscriberVerificationWhenSubscriberDoesNotExist() {
|
function testItFailsMailpoetSubscriberVerificationWhenSubscriberDoesNotExist() {
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$newsletter = $this->_createNewsletter();
|
$newsletter = $this->_createNewsletter();
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
|
|
||||||
@ -294,7 +303,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// return false
|
// return false
|
||||||
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
@ -319,7 +328,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// return false
|
// return false
|
||||||
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
@ -348,7 +357,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// return false
|
// return false
|
||||||
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
@ -371,7 +380,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
|
|
||||||
// return true after successful verification
|
// return true after successful verification
|
||||||
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
@ -393,7 +402,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler(new SubscribersFinder());
|
$scheduler = new Scheduler(new SubscribersFinder(), $this->logger_factory);
|
||||||
|
|
||||||
// return true
|
// return true
|
||||||
expect($scheduler->processScheduledStandardNewsletter($newsletter, $queue))->true();
|
expect($scheduler->processScheduledStandardNewsletter($newsletter, $queue))->true();
|
||||||
@ -417,6 +426,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
'deleteQueueOrUpdateNextRunDate' => Expected::exactly(1, function() {
|
'deleteQueueOrUpdateNextRunDate' => Expected::exactly(1, function() {
|
||||||
return false;
|
return false;
|
||||||
}),
|
}),
|
||||||
|
'logger_factory' => $this->logger_factory,
|
||||||
], $this);
|
], $this);
|
||||||
expect($scheduler->processPostNotificationNewsletter($newsletter, $queue))->false();
|
expect($scheduler->processPostNotificationNewsletter($newsletter, $queue))->false();
|
||||||
}
|
}
|
||||||
@ -428,7 +438,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter_segment = $this->_createNewsletterSegment($newsletter->id, $segment->id);
|
$newsletter_segment = $this->_createNewsletterSegment($newsletter->id, $segment->id);
|
||||||
|
|
||||||
// delete or reschedule queue when there are no subscribers in segments
|
// delete or reschedule queue when there are no subscribers in segments
|
||||||
$scheduler = $this->construct(Scheduler::class, [new SubscribersFinder()], [
|
$scheduler = $this->construct(Scheduler::class, [new SubscribersFinder(), $this->logger_factory], [
|
||||||
'deleteQueueOrUpdateNextRunDate' => Expected::exactly(1, function() {
|
'deleteQueueOrUpdateNextRunDate' => Expected::exactly(1, function() {
|
||||||
return false;
|
return false;
|
||||||
}),
|
}),
|
||||||
@ -451,7 +461,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
);
|
);
|
||||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$scheduler = new Scheduler(new SubscribersFinder());
|
$scheduler = new Scheduler(new SubscribersFinder(), $this->logger_factory);
|
||||||
|
|
||||||
// return true
|
// return true
|
||||||
expect($scheduler->processPostNotificationNewsletter($newsletter, $queue))->true();
|
expect($scheduler->processPostNotificationNewsletter($newsletter, $queue))->true();
|
||||||
@ -472,7 +482,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItFailsToProcessWhenScheduledQueuesNotFound() {
|
function testItFailsToProcessWhenScheduledQueuesNotFound() {
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
expect($scheduler->process())->false();
|
expect($scheduler->process())->false();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -480,7 +490,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$queue = $this->_createQueue(1);
|
$queue = $this->_createQueue(1);
|
||||||
$queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
$queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||||
$queue->save();
|
$queue->save();
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
expect(SendingQueue::findMany())->count(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
@ -492,7 +502,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
$queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||||
$queue->save();
|
$queue->save();
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
expect(SendingQueue::findMany())->count(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
@ -587,7 +597,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->_createNewsletter(Newsletter::TYPE_STANDARD, Newsletter::STATUS_DRAFT);
|
$newsletter = $this->_createNewsletter(Newsletter::TYPE_STANDARD, Newsletter::STATUS_DRAFT);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$finder = $this->makeEmpty(SubscribersFinder::class);
|
$finder = $this->makeEmpty(SubscribersFinder::class);
|
||||||
$scheduler = new Scheduler($finder);
|
$scheduler = new Scheduler($finder, $this->logger_factory);
|
||||||
|
|
||||||
$scheduler->processScheduledStandardNewsletter($newsletter, $queue);
|
$scheduler->processScheduledStandardNewsletter($newsletter, $queue);
|
||||||
$refetched_task = ScheduledTask::where('id', $task->id)->findOne();
|
$refetched_task = ScheduledTask::where('id', $task->id)->findOne();
|
||||||
@ -603,7 +613,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->_createNewsletter(Newsletter::TYPE_STANDARD, Newsletter::STATUS_DRAFT);
|
$newsletter = $this->_createNewsletter(Newsletter::TYPE_STANDARD, Newsletter::STATUS_DRAFT);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$finder = $this->makeEmpty(SubscribersFinder::class);
|
$finder = $this->makeEmpty(SubscribersFinder::class);
|
||||||
$scheduler = new Scheduler($finder);
|
$scheduler = new Scheduler($finder, $this->logger_factory);
|
||||||
|
|
||||||
$scheduler->processScheduledStandardNewsletter($newsletter, $queue);
|
$scheduler->processScheduledStandardNewsletter($newsletter, $queue);
|
||||||
$refetched_task = ScheduledTask::where('id', $task->id)->findOne();
|
$refetched_task = ScheduledTask::where('id', $task->id)->findOne();
|
||||||
@ -641,7 +651,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
expect($task->getSubscribers())->equals([$subscriber->id]);
|
expect($task->getSubscribers())->equals([$subscriber->id]);
|
||||||
|
|
||||||
// task should have its status set to null (i.e., sending)
|
// task should have its status set to null (i.e., sending)
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
$task = SendingTask::getByNewsletterId($newsletter->id);
|
$task = SendingTask::getByNewsletterId($newsletter->id);
|
||||||
expect($task->status)->null();
|
expect($task->status)->null();
|
||||||
@ -665,7 +675,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
expect($task->getSubscribers())->equals([$subscriber->id]);
|
expect($task->getSubscribers())->equals([$subscriber->id]);
|
||||||
|
|
||||||
// task should be deleted
|
// task should be deleted
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
$task = SendingTask::getByNewsletterId($newsletter->id);
|
$task = SendingTask::getByNewsletterId($newsletter->id);
|
||||||
expect($task)->false();
|
expect($task)->false();
|
||||||
@ -693,7 +703,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
expect($task->newsletter_id)->equals($newsletter->id);
|
expect($task->newsletter_id)->equals($newsletter->id);
|
||||||
|
|
||||||
// task should have its status set to null (i.e., sending)
|
// task should have its status set to null (i.e., sending)
|
||||||
$scheduler = new Scheduler(new SubscribersFinder());
|
$scheduler = new Scheduler(new SubscribersFinder(), $this->logger_factory);
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
$task = SendingTask::getByNewsletterId($newsletter->id);
|
$task = SendingTask::getByNewsletterId($newsletter->id);
|
||||||
expect($task->status)->null();
|
expect($task->status)->null();
|
||||||
@ -710,7 +720,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
$queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||||
$queue->updated_at = $originalUpdated;
|
$queue->updated_at = $originalUpdated;
|
||||||
$queue->save();
|
$queue->save();
|
||||||
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class));
|
$scheduler = new Scheduler($this->makeEmpty(SubscribersFinder::class), $this->logger_factory);
|
||||||
$scheduler->timer = microtime(true);
|
$scheduler->timer = microtime(true);
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
$newQueue = ScheduledTask::findOne($queue->task_id);
|
$newQueue = ScheduledTask::findOne($queue->task_id);
|
||||||
|
@ -13,6 +13,7 @@ use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
|||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||||
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler;
|
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler;
|
||||||
use MailPoet\Features\FeaturesController;
|
use MailPoet\Features\FeaturesController;
|
||||||
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterLink;
|
use MailPoet\Models\NewsletterLink;
|
||||||
@ -45,6 +46,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
private $settings;
|
private $settings;
|
||||||
/** @var Scheduler */
|
/** @var Scheduler */
|
||||||
private $stats_notifications_worker;
|
private $stats_notifications_worker;
|
||||||
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
@ -93,7 +96,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$this->newsletter_link->save();
|
$this->newsletter_link->save();
|
||||||
$this->sending_error_handler = new SendingErrorHandler();
|
$this->sending_error_handler = new SendingErrorHandler();
|
||||||
$this->stats_notifications_worker = new StatsNotificationsScheduler($this->settings);
|
$this->stats_notifications_worker = new StatsNotificationsScheduler($this->settings);
|
||||||
$this->sending_queue_worker = new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker);
|
$this->logger_factory = LoggerFactory::getInstance();
|
||||||
|
$this->sending_queue_worker = new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getDirectUnsubscribeURL() {
|
private function getDirectUnsubscribeURL() {
|
||||||
@ -124,20 +128,20 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// constructor accepts timer argument
|
// constructor accepts timer argument
|
||||||
$timer = microtime(true) - 5;
|
$timer = microtime(true) - 5;
|
||||||
$sending_queue_worker = new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker, $timer);
|
$sending_queue_worker = new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory, $timer);
|
||||||
expect($sending_queue_worker->timer)->equals($timer);
|
expect($sending_queue_worker->timer)->equals($timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItEnforcesExecutionLimitsBeforeQueueProcessing() {
|
function testItEnforcesExecutionLimitsBeforeQueueProcessing() {
|
||||||
$sending_queue_worker = Stub::make(
|
$sending_queue_worker = Stub::make(
|
||||||
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker),
|
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory),
|
||||||
[
|
[
|
||||||
'processQueue' => Expected::never(),
|
'processQueue' => Expected::never(),
|
||||||
'enforceSendingAndExecutionLimits' => Expected::exactly(1, function() {
|
'enforceSendingAndExecutionLimits' => Expected::exactly(1, function() {
|
||||||
throw new \Exception();
|
throw new \Exception();
|
||||||
}),
|
}),
|
||||||
], $this);
|
], $this);
|
||||||
$sending_queue_worker->__construct($this->sending_error_handler, $this->stats_notifications_worker);
|
$sending_queue_worker->__construct($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory);
|
||||||
try {
|
try {
|
||||||
$sending_queue_worker->process();
|
$sending_queue_worker->process();
|
||||||
self::fail('Execution limits function was not called.');
|
self::fail('Execution limits function was not called.');
|
||||||
@ -148,13 +152,14 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
|
|
||||||
function testItEnforcesExecutionLimitsAfterSendingWhenQueueStatusIsNotSetToComplete() {
|
function testItEnforcesExecutionLimitsAfterSendingWhenQueueStatusIsNotSetToComplete() {
|
||||||
$sending_queue_worker = Stub::make(
|
$sending_queue_worker = Stub::make(
|
||||||
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker),
|
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory),
|
||||||
[
|
[
|
||||||
'enforceSendingAndExecutionLimits' => Expected::exactly(1),
|
'enforceSendingAndExecutionLimits' => Expected::exactly(1),
|
||||||
], $this);
|
], $this);
|
||||||
$sending_queue_worker->__construct(
|
$sending_queue_worker->__construct(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -183,13 +188,14 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$queue = $this->queue;
|
$queue = $this->queue;
|
||||||
$queue->status = SendingQueue::STATUS_COMPLETED;
|
$queue->status = SendingQueue::STATUS_COMPLETED;
|
||||||
$sending_queue_worker = Stub::make(
|
$sending_queue_worker = Stub::make(
|
||||||
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker),
|
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory),
|
||||||
[
|
[
|
||||||
'enforceSendingAndExecutionLimits' => Expected::never(),
|
'enforceSendingAndExecutionLimits' => Expected::never(),
|
||||||
], $this);
|
], $this);
|
||||||
$sending_queue_worker->__construct(
|
$sending_queue_worker->__construct(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -213,7 +219,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
|
|
||||||
function testItEnforcesExecutionLimitsAfterQueueProcessing() {
|
function testItEnforcesExecutionLimitsAfterQueueProcessing() {
|
||||||
$sending_queue_worker = Stub::make(
|
$sending_queue_worker = Stub::make(
|
||||||
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker),
|
new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory),
|
||||||
[
|
[
|
||||||
'processQueue' => function() {
|
'processQueue' => function() {
|
||||||
// this function returns a queue object
|
// this function returns a queue object
|
||||||
@ -221,7 +227,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
},
|
},
|
||||||
'enforceSendingAndExecutionLimits' => Expected::exactly(2),
|
'enforceSendingAndExecutionLimits' => Expected::exactly(2),
|
||||||
], $this);
|
], $this);
|
||||||
$sending_queue_worker->__construct($this->sending_error_handler, $this->stats_notifications_worker);
|
$sending_queue_worker->__construct($this->sending_error_handler, $this->stats_notifications_worker, $this->logger_factory);
|
||||||
$sending_queue_worker->process();
|
$sending_queue_worker->process();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,6 +252,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -274,6 +281,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -300,6 +308,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -345,6 +354,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -393,6 +403,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -448,6 +459,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::makeEmpty(new MailerTask(), [], $this)
|
Stub::makeEmpty(new MailerTask(), [], $this)
|
||||||
);
|
);
|
||||||
@ -464,6 +476,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -514,6 +527,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -676,10 +690,15 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
->method('__get')
|
->method('__get')
|
||||||
->with('id')
|
->with('id')
|
||||||
->will($this->returnValue(100));
|
->will($this->returnValue(100));
|
||||||
$sending_queue_worker = Stub::make(new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker));
|
$sending_queue_worker = Stub::make(new SendingQueueWorker(
|
||||||
|
$this->sending_error_handler,
|
||||||
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory
|
||||||
|
));
|
||||||
$sending_queue_worker->__construct(
|
$sending_queue_worker->__construct(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -714,6 +733,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = new SendingQueueWorker(
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
$this->sending_error_handler,
|
$this->sending_error_handler,
|
||||||
$this->stats_notifications_worker,
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory,
|
||||||
$timer = false,
|
$timer = false,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
@ -738,7 +758,11 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
};
|
};
|
||||||
$wp = new WPFunctions;
|
$wp = new WPFunctions;
|
||||||
$wp->addFilter('mailpoet_cron_worker_sending_queue_batch_size', $filter);
|
$wp->addFilter('mailpoet_cron_worker_sending_queue_batch_size', $filter);
|
||||||
$sending_queue_worker = new SendingQueueWorker($this->sending_error_handler, $this->stats_notifications_worker);
|
$sending_queue_worker = new SendingQueueWorker(
|
||||||
|
$this->sending_error_handler,
|
||||||
|
$this->stats_notifications_worker,
|
||||||
|
$this->logger_factory
|
||||||
|
);
|
||||||
expect($sending_queue_worker->batch_size)->equals($custom_batch_size_value);
|
expect($sending_queue_worker->batch_size)->equals($custom_batch_size_value);
|
||||||
$wp->removeFilter('mailpoet_cron_worker_sending_queue_batch_size', $filter);
|
$wp->removeFilter('mailpoet_cron_worker_sending_queue_batch_size', $filter);
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ use Codeception\Util\Fixtures;
|
|||||||
use Helper\WordPressHooks as WPHooksHelper;
|
use Helper\WordPressHooks as WPHooksHelper;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
|
||||||
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterLink;
|
use MailPoet\Models\NewsletterLink;
|
||||||
@ -36,6 +37,9 @@ class NewsletterTest extends \MailPoetTest {
|
|||||||
/** @var SendingTask */
|
/** @var SendingTask */
|
||||||
private $queue;
|
private $queue;
|
||||||
|
|
||||||
|
/** @var LoggerFactory */
|
||||||
|
private $logger_factory;
|
||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
$this->newsletter_task = new NewsletterTask();
|
$this->newsletter_task = new NewsletterTask();
|
||||||
@ -61,6 +65,7 @@ class NewsletterTest extends \MailPoetTest {
|
|||||||
$this->queue = SendingTask::create();
|
$this->queue = SendingTask::create();
|
||||||
$this->queue->newsletter_id = $this->newsletter->id;
|
$this->queue->newsletter_id = $this->newsletter->id;
|
||||||
$this->queue->save();
|
$this->queue->save();
|
||||||
|
$this->logger_factory = LoggerFactory::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItConstructs() {
|
function testItConstructs() {
|
||||||
@ -208,6 +213,7 @@ class NewsletterTest extends \MailPoetTest {
|
|||||||
$this->newsletter->parent_id = $this->newsletter->id;
|
$this->newsletter->parent_id = $this->newsletter->id;
|
||||||
$posts_task = $this->make(PostsTask::class, [
|
$posts_task = $this->make(PostsTask::class, [
|
||||||
'getAlcPostsCount' => 1,
|
'getAlcPostsCount' => 1,
|
||||||
|
'logger_factory' => $this->logger_factory,
|
||||||
]);
|
]);
|
||||||
$newsletter_task = new NewsletterTask(new WPFunctions, $posts_task);
|
$newsletter_task = new NewsletterTask(new WPFunctions, $posts_task);
|
||||||
$result = $newsletter_task->preProcessNewsletter($this->newsletter, $this->queue);
|
$result = $newsletter_task->preProcessNewsletter($this->newsletter, $this->queue);
|
||||||
|
Reference in New Issue
Block a user