diff --git a/lib/API/Endpoints/Newsletters.php b/lib/API/Endpoints/Newsletters.php index 6c371956b4..bd61725c0f 100644 --- a/lib/API/Endpoints/Newsletters.php +++ b/lib/API/Endpoints/Newsletters.php @@ -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 = false, - $sender = false, - $reply_to = false + $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( diff --git a/tests/unit/API/Endpoints/NewslettersTest.php b/tests/unit/API/Endpoints/NewslettersTest.php index 20b8d1ba9c..627ee053c6 100644 --- a/tests/unit/API/Endpoints/NewslettersTest.php +++ b/tests/unit/API/Endpoints/NewslettersTest.php @@ -1,4 +1,6 @@ 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,10 +449,31 @@ 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(); NewsletterOptionField::deleteMany(); Segment::deleteMany(); } -} +} \ No newline at end of file