Prevents sending queue rerendering when post notification is updated

This commit is contained in:
Vlad
2018-05-27 21:59:58 -04:00
parent 2890b66cfd
commit 7b665acae3
2 changed files with 27 additions and 1 deletions

View File

@ -116,7 +116,7 @@ class Newsletters extends APIEndpoint {
} }
$queue = $newsletter->getQueue(); $queue = $newsletter->getQueue();
if($queue) { if($queue && !in_array($newsletter->type, array(Newsletter::TYPE_NOTIFICATION, Newsletter::TYPE_NOTIFICATION_HISTORY))) {
// if newsletter was previously scheduled and is now unscheduled, set its status to DRAFT and delete associated queue record // if newsletter was previously scheduled and is now unscheduled, set its status to DRAFT and delete associated queue record
if($newsletter->status === Newsletter::STATUS_SCHEDULED && isset($options['isScheduled']) && empty($options['isScheduled'])) { if($newsletter->status === Newsletter::STATUS_SCHEDULED && isset($options['isScheduled']) && empty($options['isScheduled'])) {
$queue->delete(); $queue->delete();

View File

@ -169,6 +169,32 @@ class NewslettersTest extends \MailPoetTest {
expect($updated_newsletter->subject)->equals('My Updated Newsletter'); expect($updated_newsletter->subject)->equals('My Updated Newsletter');
} }
function testItDoesNotRerenderPostNotificationsUponUpdate() {
$sending_queue = SendingTask::create();
$sending_queue->newsletter_id = $this->post_notification->id;
$sending_queue->status = SendingQueue::STATUS_SCHEDULED;
$sending_queue->newsletter_rendered_body = null;
$sending_queue->newsletter_rendered_subject = null;
$sending_queue->save();
expect($sending_queue->getErrors())->false();
$router = new Newsletters();
$newsletter_data = array(
'id' => $this->post_notification->id,
'subject' => 'My Updated Newsletter',
'body' => Fixtures::get('newsletter_body_template'),
);
$response = $router->save($newsletter_data);
$updated_queue = SendingQueue::where('newsletter_id', $this->post_notification->id)
->findOne()
->asArray();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($updated_queue['newsletter_rendered_body'])->null();
expect($updated_queue['newsletter_rendered_subject'])->null();
}
function testItCanRerenderQueueUponSave() { function testItCanRerenderQueueUponSave() {
$sending_queue = SendingTask::create(); $sending_queue = SendingTask::create();
$sending_queue->newsletter_id = $this->newsletter->id; $sending_queue->newsletter_id = $this->newsletter->id;