diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index 3526c10d5a..536ce25f40 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -116,7 +116,7 @@ class Newsletters extends APIEndpoint { } $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->status === Newsletter::STATUS_SCHEDULED && isset($options['isScheduled']) && empty($options['isScheduled'])) { $queue->delete(); diff --git a/tests/unit/API/JSON/v1/NewslettersTest.php b/tests/unit/API/JSON/v1/NewslettersTest.php index 72a85ba2cb..4d171132c2 100644 --- a/tests/unit/API/JSON/v1/NewslettersTest.php +++ b/tests/unit/API/JSON/v1/NewslettersTest.php @@ -169,6 +169,32 @@ class NewslettersTest extends \MailPoetTest { 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() { $sending_queue = SendingTask::create(); $sending_queue->newsletter_id = $this->newsletter->id;