- Fixes newsletter preview not being sent

- Adds unit test
This commit is contained in:
Vlad
2016-12-29 15:59:31 -05:00
parent d2b41a5b90
commit 4f37a44363
2 changed files with 39 additions and 13 deletions

View File

@ -247,13 +247,11 @@ class Newsletters extends APIEndpoint {
APIError::NOT_FOUND => __('This newsletter does not exist.', 'mailpoet')
));
} else {
$newsletter = $newsletter->asArray();
$renderer = new Renderer($newsletter, $preview = true);
$rendered_newsletter = $renderer->render();
$divider = '***MailPoet***';
$data_for_shortcodes = array_merge(
array($newsletter['subject']),
array($newsletter->subject),
$rendered_newsletter
);
@ -266,19 +264,22 @@ class Newsletters extends APIEndpoint {
$newsletter,
$subscriber
);
list(
$newsletter['subject'],
$newsletter['body']['html'],
$newsletter['body']['text']
$rendered_newsletter['subject'],
$rendered_newsletter['body']['html'],
$rendered_newsletter['body']['text']
) = explode($divider, $shortcodes->replace($body));
try {
$mailer = new \MailPoet\Mailer\Mailer(
$mailer = (!empty($data['mailer'])) ?
$data['mailer'] :
new \MailPoet\Mailer\Mailer(
$mailer = false,
$sender = false,
$reply_to = false
);
$result = $mailer->send($newsletter, $data['subscriber']);
$result = $mailer->send($rendered_newsletter, $data['subscriber']);
if($result['response'] === false) {
$error = sprintf(

View File

@ -1,4 +1,6 @@
<?php
use Codeception\Util\Fixtures;
use Codeception\Util\Stub;
use \MailPoet\API\Response as APIResponse;
use \MailPoet\API\Endpoints\Newsletters;
use \MailPoet\Models\Newsletter;
@ -11,11 +13,13 @@ class NewslettersTest extends MailPoetTest {
function _before() {
$this->newsletter = Newsletter::createOrUpdate(array(
'subject' => 'My Standard Newsletter',
'type' => Newsletter::TYPE_STANDARD
'body' => Fixtures::get('newsletter_subject_template'),
'type' => Newsletter::TYPE_STANDARD,
));
$this->post_notification = Newsletter::createOrUpdate(array(
'subject' => 'My Post Notification',
'body' => Fixtures::get('newsletter_subject_template'),
'type' => Newsletter::TYPE_NOTIFICATION
));
}
@ -445,6 +449,27 @@ class NewslettersTest extends MailPoetTest {
expect($response->meta['count'])->equals(0);
}
function testItCanSendAPreview() {
$subscriber = 'test@subscriber.com';
$data = array(
'subscriber' => $subscriber,
'id' => $this->newsletter->id,
'mailer' => Stub::makeEmpty(
'\MailPoet\Mailer\Mailer',
array(
'send' => function($newsletter, $subscriber) {
expect(is_array($newsletter))->true();
expect($subscriber)->equals($subscriber);
return array('response' => true);
}
)
)
);
$router = new Newsletters();
$response = $router->sendPreview($data);
expect($response->status)->equals(APIResponse::STATUS_OK);
}
function _after() {
Newsletter::deleteMany();
NewsletterSegment::deleteMany();