diff --git a/lib/Cron/Workers/Scheduler.php b/lib/Cron/Workers/Scheduler.php index 146b4b6453..8fc7389094 100644 --- a/lib/Cron/Workers/Scheduler.php +++ b/lib/Cron/Workers/Scheduler.php @@ -31,6 +31,8 @@ class Scheduler { ->findOne($queue->newsletter_id); if(!$newsletter || $newsletter->deleted_at !== null) { $queue->delete(); + } elseif($newsletter->status !== 'active') { + continue; } elseif($newsletter->type === 'welcome') { $this->processWelcomeNewsletter($newsletter, $queue); } elseif($newsletter->type === 'notification') { diff --git a/tests/unit/Cron/Workers/SchedulerTest.php b/tests/unit/Cron/Workers/SchedulerTest.php index 9a19433798..a6b284640e 100644 --- a/tests/unit/Cron/Workers/SchedulerTest.php +++ b/tests/unit/Cron/Workers/SchedulerTest.php @@ -503,6 +503,19 @@ class SchedulerTest extends MailPoetTest { } } + function testItDoesNotProcessScheduledJobsWhenNewsletterIsNotActive() { + $newsletter = $this->_createNewsletter(Newsletter::TYPE_STANDARD, Newsletter::STATUS_DRAFT); + $queue = $this->_createQueue($newsletter->id); + $queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp')); + $queue->save(); + + $scheduler = Stub::make(new Scheduler(), array( + 'processScheduledStandardNewsletter' => Stub::never() + ), $this); + // scheduled job is not processed + $scheduler->process(); + } + function _createNewsletterSegment($newsletter_id, $segment_id) { $newsletter_segment = NewsletterSegment::create(); $newsletter_segment->newsletter_id = $newsletter_id; @@ -544,9 +557,10 @@ class SchedulerTest extends MailPoetTest { return $subscriber; } - function _createNewsletter($type = Newsletter::TYPE_NOTIFICATION) { + function _createNewsletter($type = Newsletter::TYPE_NOTIFICATION, $status = 'active') { $newsletter = Newsletter::create(); $newsletter->type = $type; + $newsletter->status = $status; $newsletter->save(); expect($newsletter->getErrors())->false(); return $newsletter;