api/newsletters: Re-render newsletter with queue on save [MAILPOET-1305]

This commit is contained in:
Rostislav Wolny
2018-03-06 08:59:57 +01:00
parent 0d514a8084
commit 662b033677
2 changed files with 13 additions and 10 deletions

View File

@ -6,6 +6,7 @@ use Carbon\Carbon;
use MailPoet\API\JSON\Endpoint as APIEndpoint; use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\Error as APIError; use MailPoet\API\JSON\Error as APIError;
use MailPoet\Config\AccessControl; use MailPoet\Config\AccessControl;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask;
use MailPoet\Listing; use MailPoet\Listing;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterOption; use MailPoet\Models\NewsletterOption;
@ -124,7 +125,8 @@ class Newsletters extends APIEndpoint {
} else { } else {
$queue->newsletter_rendered_body = null; $queue->newsletter_rendered_body = null;
$queue->newsletter_rendered_subject = null; $queue->newsletter_rendered_subject = null;
$queue->save(); $newsletterQueueTask = new NewsletterQueueTask();
$newsletterQueueTask->preProcessNewsletter($newsletter, $queue);
} }
} }

View File

@ -169,30 +169,31 @@ class NewslettersTest extends \MailPoetTest {
expect($updated_newsletter->subject)->equals('My Updated Newsletter'); expect($updated_newsletter->subject)->equals('My Updated Newsletter');
} }
function testItCanClearRenderedQueueUponSave() { function testItCanRerenderQueueUponSave() {
$sending_queue = SendingTask::create(); $sending_queue = SendingTask::create();
$sending_queue->newsletter_id = $this->newsletter->id; $sending_queue->newsletter_id = $this->newsletter->id;
$sending_queue->status = SendingQueue::STATUS_SCHEDULED; $sending_queue->status = SendingQueue::STATUS_SCHEDULED;
$sending_queue->newsletter_rendered_body = array('html' => 'html', 'text' => 'text'); $sending_queue->newsletter_rendered_body = null;
$sending_queue->newsletter_rendered_subject = 'Rendered subject ...'; $sending_queue->newsletter_rendered_subject = null;
$sending_queue->save(); $sending_queue->save();
expect($sending_queue->getErrors())->false(); expect($sending_queue->getErrors())->false();
$router = new Newsletters(); $router = new Newsletters();
$newsletter_data = array( $newsletter_data = array(
'id' => $this->newsletter->id, 'id' => $this->newsletter->id,
'subject' => 'My Updated Newsletter' 'subject' => 'My Updated Newsletter',
'body' => Fixtures::get('newsletter_body_template'),
); );
$response = $router->save($newsletter_data); $response = $router->save($newsletter_data);
$updated_newsletter = Newsletter::findOne($this->newsletter->id) $updated_queue = SendingQueue::where('newsletter_id', $this->newsletter->id)
->withSendingQueue() ->findOne()
->asArray(); ->asArray();
$updated_queue = $updated_newsletter['queue'];
expect($response->status)->equals(APIResponse::STATUS_OK); expect($response->status)->equals(APIResponse::STATUS_OK);
expect(unserialize($updated_queue['newsletter_rendered_body']))->equals(null); expect($updated_queue['newsletter_rendered_body'])->hasKey('html');
expect(unserialize($updated_queue['newsletter_rendered_subject']))->equals(null); expect($updated_queue['newsletter_rendered_body'])->hasKey('text');
expect($updated_queue['newsletter_rendered_subject'])->equals('My Updated Newsletter');
} }
function testItCanUpdatePostNotificationScheduleUponSave() { function testItCanUpdatePostNotificationScheduleUponSave() {