Prevents processing scheduled sending queues for inactive newsletters

This commit is contained in:
Vlad
2017-06-01 19:50:25 -04:00
parent dd4bebb570
commit ea831ef160
2 changed files with 17 additions and 1 deletions

View File

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

View File

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