From aab68bc0eb1db7244e1c1970f1fc8bf18b5c9d03 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Fri, 29 Jun 2018 15:51:38 +0200 Subject: [PATCH 1/2] Extend pausing of scheduled tasks also for welcome and automatic emails [MAILPOET-1442] Without setting the tasks status to paused they would stay sheduled but couldn't be sent. --- lib/Models/Newsletter.php | 7 +++- tests/unit/Models/NewsletterTest.php | 61 ++++++++++++++++------------ 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index ad4a7debc5..9ce48f7e5b 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -325,10 +325,13 @@ class Newsletter extends Model { $this->set('status', $status); $this->save(); } - if(($status === self::STATUS_DRAFT) && ($this->type === self::TYPE_NOTIFICATION)) { + + $types_with_activation = [self::TYPE_NOTIFICATION, self::TYPE_WELCOME, self::TYPE_AUTOMATIC]; + + if(($status === self::STATUS_DRAFT) && in_array($this->type, $types_with_activation)) { ScheduledTask::pauseAllByNewsletter($this); } - if(($status === self::STATUS_ACTIVE) && ($this->type === self::TYPE_NOTIFICATION)) { + if(($status === self::STATUS_ACTIVE) && in_array($this->type, $types_with_activation)) { ScheduledTask::setScheduledAllByNewsletter($this); } return $this; diff --git a/tests/unit/Models/NewsletterTest.php b/tests/unit/Models/NewsletterTest.php index 9db86a02fb..727a3aae3f 100644 --- a/tests/unit/Models/NewsletterTest.php +++ b/tests/unit/Models/NewsletterTest.php @@ -875,36 +875,43 @@ class NewsletterTest extends \MailPoetTest { expect($newsletter->getMeta())->equals($meta); } - function testPausesTaskWhenPostNotificationIsDisabled() { - $newsletter = Newsletter::createOrUpdate(array( - 'type' => Newsletter::TYPE_NOTIFICATION - )); - $task = ScheduledTask::createOrUpdate(array('status' => ScheduledTask::STATUS_SCHEDULED)); - SendingQueue::createOrUpdate(array( - 'newsletter_id' => $newsletter->id(), - 'task_id' => $task->id(), - )); - $newsletter->setStatus(Newsletter::STATUS_DRAFT); - $task_found = ScheduledTask::findOne($task->id()); - expect($task_found->status)->equals(ScheduledTask::STATUS_PAUSED); + function testPausesTaskWhenNewsletterWithActivationIsDisabled() { + $newsletters_with_activation = [Newsletter::TYPE_NOTIFICATION, Newsletter::TYPE_WELCOME, Newsletter::TYPE_AUTOMATIC]; + foreach($newsletters_with_activation as $type) { + $newsletter = Newsletter::createOrUpdate(array( + 'type' => $type + )); + $task = ScheduledTask::createOrUpdate(array('status' => ScheduledTask::STATUS_SCHEDULED)); + SendingQueue::createOrUpdate(array( + 'newsletter_id' => $newsletter->id(), + 'task_id' => $task->id(), + )); + $newsletter->setStatus(Newsletter::STATUS_DRAFT); + $task_found = ScheduledTask::findOne($task->id()); + expect($task_found->status)->equals(ScheduledTask::STATUS_PAUSED); + } } - function testUnpausesTaskWhenPostNotificationIsEnabled() { - $newsletter = Newsletter::createOrUpdate(array( - 'type' => Newsletter::TYPE_NOTIFICATION - )); - $task = ScheduledTask::createOrUpdate(array( - 'status' => ScheduledTask::STATUS_PAUSED, - 'scheduled_at' => Carbon::createFromTimestamp(current_time('timestamp'))->addDays(10)->format('Y-m-d H:i:s'), - )); - SendingQueue::createOrUpdate(array( - 'newsletter_id' => $newsletter->id(), - 'task_id' => $task->id(), - )); - $newsletter->setStatus(Newsletter::STATUS_ACTIVE); - $task_found = ScheduledTask::findOne($task->id()); - expect($task_found->status)->equals(ScheduledTask::STATUS_SCHEDULED); + function testUnpausesTaskWhenNewsletterWithActivationIsEnabled() { + $newsletters_with_activation = [Newsletter::TYPE_NOTIFICATION, Newsletter::TYPE_WELCOME, Newsletter::TYPE_AUTOMATIC]; + foreach($newsletters_with_activation as $type) { + $newsletter = Newsletter::createOrUpdate(array( + 'type' => $type + )); + $task = ScheduledTask::createOrUpdate(array( + 'status' => ScheduledTask::STATUS_PAUSED, + 'scheduled_at' => Carbon::createFromTimestamp(current_time('timestamp'))->addDays(10)->format('Y-m-d H:i:s'), + )); + SendingQueue::createOrUpdate(array( + 'newsletter_id' => $newsletter->id(), + 'task_id' => $task->id(), + )); + $newsletter->setStatus(Newsletter::STATUS_ACTIVE); + $task_found = ScheduledTask::findOne($task->id()); + expect($task_found->status)->equals(ScheduledTask::STATUS_SCHEDULED); + } } + function _after() { \ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table); \ORM::raw_execute('TRUNCATE ' . Newsletter::$_table); From bd08a529dbc6228e617797b6626d4cb3079939bf Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Fri, 29 Jun 2018 16:30:32 +0200 Subject: [PATCH 2/2] Update testVersions for PHP code sniffer --- RoboFile.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RoboFile.php b/RoboFile.php index 7e5ed465b4..7f314f0a04 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -273,7 +273,7 @@ class RoboFile extends \Robo\Tasks { ->taskExec( './vendor/bin/phpcs '. '--standard=./tasks/code_sniffer/MailPoet '. - '--runtime-set testVersion 5.3-7.0 '. + '--runtime-set testVersion 5.4-7.2 '. '--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'. './lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '. 'lib/ '. @@ -282,7 +282,7 @@ class RoboFile extends \Robo\Tasks { ->taskExec( './vendor/bin/phpcs '. '--standard=./tasks/code_sniffer/MailPoet '. - '--runtime-set testVersion 5.4-7.0 '. + '--runtime-set testVersion 5.4-7.2 '. '--ignore=./tests/unit/_bootstrap.php '. 'tests/unit/ '. $severityFlag