From 662b033677eecdbe4e7c391801bafed647ae2001 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Tue, 6 Mar 2018 08:59:57 +0100 Subject: [PATCH] api/newsletters: Re-render newsletter with queue on save [MAILPOET-1305] --- lib/API/JSON/v1/Newsletters.php | 4 +++- tests/unit/API/JSON/v1/NewslettersTest.php | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index d3323d3bdd..65539d425e 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -6,6 +6,7 @@ use Carbon\Carbon; use MailPoet\API\JSON\Endpoint as APIEndpoint; use MailPoet\API\JSON\Error as APIError; use MailPoet\Config\AccessControl; +use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask; use MailPoet\Listing; use MailPoet\Models\Newsletter; use MailPoet\Models\NewsletterOption; @@ -124,7 +125,8 @@ class Newsletters extends APIEndpoint { } else { $queue->newsletter_rendered_body = null; $queue->newsletter_rendered_subject = null; - $queue->save(); + $newsletterQueueTask = new NewsletterQueueTask(); + $newsletterQueueTask->preProcessNewsletter($newsletter, $queue); } } diff --git a/tests/unit/API/JSON/v1/NewslettersTest.php b/tests/unit/API/JSON/v1/NewslettersTest.php index 5965e02c56..72a85ba2cb 100644 --- a/tests/unit/API/JSON/v1/NewslettersTest.php +++ b/tests/unit/API/JSON/v1/NewslettersTest.php @@ -169,30 +169,31 @@ class NewslettersTest extends \MailPoetTest { expect($updated_newsletter->subject)->equals('My Updated Newsletter'); } - function testItCanClearRenderedQueueUponSave() { + function testItCanRerenderQueueUponSave() { $sending_queue = SendingTask::create(); $sending_queue->newsletter_id = $this->newsletter->id; $sending_queue->status = SendingQueue::STATUS_SCHEDULED; - $sending_queue->newsletter_rendered_body = array('html' => 'html', 'text' => 'text'); - $sending_queue->newsletter_rendered_subject = 'Rendered subject ...'; + $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->newsletter->id, - 'subject' => 'My Updated Newsletter' + 'subject' => 'My Updated Newsletter', + 'body' => Fixtures::get('newsletter_body_template'), ); $response = $router->save($newsletter_data); - $updated_newsletter = Newsletter::findOne($this->newsletter->id) - ->withSendingQueue() + $updated_queue = SendingQueue::where('newsletter_id', $this->newsletter->id) + ->findOne() ->asArray(); - $updated_queue = $updated_newsletter['queue']; expect($response->status)->equals(APIResponse::STATUS_OK); - expect(unserialize($updated_queue['newsletter_rendered_body']))->equals(null); - expect(unserialize($updated_queue['newsletter_rendered_subject']))->equals(null); + expect($updated_queue['newsletter_rendered_body'])->hasKey('html'); + expect($updated_queue['newsletter_rendered_body'])->hasKey('text'); + expect($updated_queue['newsletter_rendered_subject'])->equals('My Updated Newsletter'); } function testItCanUpdatePostNotificationScheduleUponSave() {