Merge pull request #1422 from mailpoet/tasks-pausing

Pause scheduled tasks for deactivated emails [MAILPOET-1442]
This commit is contained in:
Michelle Shull
2018-07-10 09:59:03 -04:00
committed by GitHub
3 changed files with 41 additions and 31 deletions

View File

@ -273,7 +273,7 @@ class RoboFile extends \Robo\Tasks {
->taskExec( ->taskExec(
'./vendor/bin/phpcs '. './vendor/bin/phpcs '.
'--standard=./tasks/code_sniffer/MailPoet '. '--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,'. '--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'.
'./lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '. './lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '.
'lib/ '. 'lib/ '.
@ -282,7 +282,7 @@ class RoboFile extends \Robo\Tasks {
->taskExec( ->taskExec(
'./vendor/bin/phpcs '. './vendor/bin/phpcs '.
'--standard=./tasks/code_sniffer/MailPoet '. '--standard=./tasks/code_sniffer/MailPoet '.
'--runtime-set testVersion 5.4-7.0 '. '--runtime-set testVersion 5.4-7.2 '.
'--ignore=./tests/unit/_bootstrap.php '. '--ignore=./tests/unit/_bootstrap.php '.
'tests/unit/ '. 'tests/unit/ '.
$severityFlag $severityFlag

View File

@ -325,10 +325,13 @@ class Newsletter extends Model {
$this->set('status', $status); $this->set('status', $status);
$this->save(); $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); 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); ScheduledTask::setScheduledAllByNewsletter($this);
} }
return $this; return $this;

View File

@ -875,9 +875,11 @@ class NewsletterTest extends \MailPoetTest {
expect($newsletter->getMeta())->equals($meta); expect($newsletter->getMeta())->equals($meta);
} }
function testPausesTaskWhenPostNotificationIsDisabled() { function testPausesTaskWhenNewsletterWithActivationIsDisabled() {
$newsletters_with_activation = [Newsletter::TYPE_NOTIFICATION, Newsletter::TYPE_WELCOME, Newsletter::TYPE_AUTOMATIC];
foreach($newsletters_with_activation as $type) {
$newsletter = Newsletter::createOrUpdate(array( $newsletter = Newsletter::createOrUpdate(array(
'type' => Newsletter::TYPE_NOTIFICATION 'type' => $type
)); ));
$task = ScheduledTask::createOrUpdate(array('status' => ScheduledTask::STATUS_SCHEDULED)); $task = ScheduledTask::createOrUpdate(array('status' => ScheduledTask::STATUS_SCHEDULED));
SendingQueue::createOrUpdate(array( SendingQueue::createOrUpdate(array(
@ -888,10 +890,13 @@ class NewsletterTest extends \MailPoetTest {
$task_found = ScheduledTask::findOne($task->id()); $task_found = ScheduledTask::findOne($task->id());
expect($task_found->status)->equals(ScheduledTask::STATUS_PAUSED); expect($task_found->status)->equals(ScheduledTask::STATUS_PAUSED);
} }
}
function testUnpausesTaskWhenPostNotificationIsEnabled() { function testUnpausesTaskWhenNewsletterWithActivationIsEnabled() {
$newsletters_with_activation = [Newsletter::TYPE_NOTIFICATION, Newsletter::TYPE_WELCOME, Newsletter::TYPE_AUTOMATIC];
foreach($newsletters_with_activation as $type) {
$newsletter = Newsletter::createOrUpdate(array( $newsletter = Newsletter::createOrUpdate(array(
'type' => Newsletter::TYPE_NOTIFICATION 'type' => $type
)); ));
$task = ScheduledTask::createOrUpdate(array( $task = ScheduledTask::createOrUpdate(array(
'status' => ScheduledTask::STATUS_PAUSED, 'status' => ScheduledTask::STATUS_PAUSED,
@ -905,6 +910,8 @@ class NewsletterTest extends \MailPoetTest {
$task_found = ScheduledTask::findOne($task->id()); $task_found = ScheduledTask::findOne($task->id());
expect($task_found->status)->equals(ScheduledTask::STATUS_SCHEDULED); expect($task_found->status)->equals(ScheduledTask::STATUS_SCHEDULED);
} }
}
function _after() { function _after() {
\ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table); \ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table); \ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);