- Fixes newsletter preview not being sent
- Adds unit test
This commit is contained in:
@ -247,13 +247,11 @@ class Newsletters extends APIEndpoint {
|
|||||||
APIError::NOT_FOUND => __('This newsletter does not exist.', 'mailpoet')
|
APIError::NOT_FOUND => __('This newsletter does not exist.', 'mailpoet')
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
$newsletter = $newsletter->asArray();
|
|
||||||
|
|
||||||
$renderer = new Renderer($newsletter, $preview = true);
|
$renderer = new Renderer($newsletter, $preview = true);
|
||||||
$rendered_newsletter = $renderer->render();
|
$rendered_newsletter = $renderer->render();
|
||||||
$divider = '***MailPoet***';
|
$divider = '***MailPoet***';
|
||||||
$data_for_shortcodes = array_merge(
|
$data_for_shortcodes = array_merge(
|
||||||
array($newsletter['subject']),
|
array($newsletter->subject),
|
||||||
$rendered_newsletter
|
$rendered_newsletter
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -266,19 +264,22 @@ class Newsletters extends APIEndpoint {
|
|||||||
$newsletter,
|
$newsletter,
|
||||||
$subscriber
|
$subscriber
|
||||||
);
|
);
|
||||||
|
|
||||||
list(
|
list(
|
||||||
$newsletter['subject'],
|
$rendered_newsletter['subject'],
|
||||||
$newsletter['body']['html'],
|
$rendered_newsletter['body']['html'],
|
||||||
$newsletter['body']['text']
|
$rendered_newsletter['body']['text']
|
||||||
) = explode($divider, $shortcodes->replace($body));
|
) = explode($divider, $shortcodes->replace($body));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$mailer = new \MailPoet\Mailer\Mailer(
|
$mailer = (!empty($data['mailer'])) ?
|
||||||
|
$data['mailer'] :
|
||||||
|
new \MailPoet\Mailer\Mailer(
|
||||||
$mailer = false,
|
$mailer = false,
|
||||||
$sender = false,
|
$sender = false,
|
||||||
$reply_to = false
|
$reply_to = false
|
||||||
);
|
);
|
||||||
$result = $mailer->send($newsletter, $data['subscriber']);
|
$result = $mailer->send($rendered_newsletter, $data['subscriber']);
|
||||||
|
|
||||||
if($result['response'] === false) {
|
if($result['response'] === false) {
|
||||||
$error = sprintf(
|
$error = sprintf(
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
use Codeception\Util\Fixtures;
|
||||||
|
use Codeception\Util\Stub;
|
||||||
use \MailPoet\API\Response as APIResponse;
|
use \MailPoet\API\Response as APIResponse;
|
||||||
use \MailPoet\API\Endpoints\Newsletters;
|
use \MailPoet\API\Endpoints\Newsletters;
|
||||||
use \MailPoet\Models\Newsletter;
|
use \MailPoet\Models\Newsletter;
|
||||||
@ -11,11 +13,13 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
function _before() {
|
function _before() {
|
||||||
$this->newsletter = Newsletter::createOrUpdate(array(
|
$this->newsletter = Newsletter::createOrUpdate(array(
|
||||||
'subject' => 'My Standard Newsletter',
|
'subject' => 'My Standard Newsletter',
|
||||||
'type' => Newsletter::TYPE_STANDARD
|
'body' => Fixtures::get('newsletter_subject_template'),
|
||||||
|
'type' => Newsletter::TYPE_STANDARD,
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->post_notification = Newsletter::createOrUpdate(array(
|
$this->post_notification = Newsletter::createOrUpdate(array(
|
||||||
'subject' => 'My Post Notification',
|
'subject' => 'My Post Notification',
|
||||||
|
'body' => Fixtures::get('newsletter_subject_template'),
|
||||||
'type' => Newsletter::TYPE_NOTIFICATION
|
'type' => Newsletter::TYPE_NOTIFICATION
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -445,6 +449,27 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
expect($response->meta['count'])->equals(0);
|
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() {
|
function _after() {
|
||||||
Newsletter::deleteMany();
|
Newsletter::deleteMany();
|
||||||
NewsletterSegment::deleteMany();
|
NewsletterSegment::deleteMany();
|
||||||
|
Reference in New Issue
Block a user