Use mailer from DI in preview, remove $data['mailer'] param (misused for tests only)
[MAILPOET-2515]
This commit is contained in:
committed by
Jack Kitterhing
parent
ad9793f511
commit
1da56efd32
@ -10,6 +10,7 @@ use MailPoet\Config\AccessControl;
|
|||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask;
|
||||||
use MailPoet\Listing;
|
use MailPoet\Listing;
|
||||||
|
use MailPoet\Mailer\Mailer as MailerFactory;
|
||||||
use MailPoet\Mailer\MetaInfo;
|
use MailPoet\Mailer\MetaInfo;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterOption;
|
use MailPoet\Models\NewsletterOption;
|
||||||
@ -71,6 +72,9 @@ class Newsletters extends APIEndpoint {
|
|||||||
/** @var Emoji */
|
/** @var Emoji */
|
||||||
private $emoji;
|
private $emoji;
|
||||||
|
|
||||||
|
/** @var MailerFactory */
|
||||||
|
private $mailer;
|
||||||
|
|
||||||
function __construct(
|
function __construct(
|
||||||
Listing\BulkActionController $bulk_action,
|
Listing\BulkActionController $bulk_action,
|
||||||
Listing\Handler $listing_handler,
|
Listing\Handler $listing_handler,
|
||||||
@ -82,6 +86,7 @@ class Newsletters extends APIEndpoint {
|
|||||||
NewslettersRepository $newsletters_repository,
|
NewslettersRepository $newsletters_repository,
|
||||||
NewslettersResponseBuilder $newsletters_response_builder,
|
NewslettersResponseBuilder $newsletters_response_builder,
|
||||||
PostNotificationScheduler $post_notification_scheduler,
|
PostNotificationScheduler $post_notification_scheduler,
|
||||||
|
MailerFactory $mailer,
|
||||||
MetaInfo $mailerMetaInfo,
|
MetaInfo $mailerMetaInfo,
|
||||||
Emoji $emoji
|
Emoji $emoji
|
||||||
) {
|
) {
|
||||||
@ -95,6 +100,7 @@ class Newsletters extends APIEndpoint {
|
|||||||
$this->newsletters_repository = $newsletters_repository;
|
$this->newsletters_repository = $newsletters_repository;
|
||||||
$this->newsletters_response_builder = $newsletters_response_builder;
|
$this->newsletters_response_builder = $newsletters_response_builder;
|
||||||
$this->post_notification_scheduler = $post_notification_scheduler;
|
$this->post_notification_scheduler = $post_notification_scheduler;
|
||||||
|
$this->mailer = $mailer;
|
||||||
$this->mailerMetaInfo = $mailerMetaInfo;
|
$this->mailerMetaInfo = $mailerMetaInfo;
|
||||||
$this->emoji = $emoji;
|
$this->emoji = $emoji;
|
||||||
}
|
}
|
||||||
@ -475,14 +481,11 @@ class Newsletters extends APIEndpoint {
|
|||||||
$rendered_newsletter['id'] = $newsletter->id;
|
$rendered_newsletter['id'] = $newsletter->id;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$mailer = (!empty($data['mailer'])) ?
|
|
||||||
$data['mailer'] :
|
|
||||||
new \MailPoet\Mailer\Mailer();
|
|
||||||
$extra_params = [
|
$extra_params = [
|
||||||
'unsubscribe_url' => WPFunctions::get()->homeUrl(),
|
'unsubscribe_url' => WPFunctions::get()->homeUrl(),
|
||||||
'meta' => $this->mailerMetaInfo->getPreviewMetaInfo(),
|
'meta' => $this->mailerMetaInfo->getPreviewMetaInfo(),
|
||||||
];
|
];
|
||||||
$result = $mailer->send($rendered_newsletter, $data['subscriber'], $extra_params);
|
$result = $this->mailer->send($rendered_newsletter, $data['subscriber'], $extra_params);
|
||||||
|
|
||||||
if ($result['response'] === false) {
|
if ($result['response'] === false) {
|
||||||
$error = sprintf(
|
$error = sprintf(
|
||||||
|
@ -14,6 +14,8 @@ use MailPoet\Cron\CronHelper;
|
|||||||
use MailPoet\DI\ContainerWrapper;
|
use MailPoet\DI\ContainerWrapper;
|
||||||
use MailPoet\Listing\BulkActionController;
|
use MailPoet\Listing\BulkActionController;
|
||||||
use MailPoet\Listing\Handler;
|
use MailPoet\Listing\Handler;
|
||||||
|
use MailPoet\Mailer\Mailer;
|
||||||
|
use MailPoet\Mailer\MailerError;
|
||||||
use MailPoet\Mailer\MetaInfo;
|
use MailPoet\Mailer\MetaInfo;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterOption;
|
use MailPoet\Models\NewsletterOption;
|
||||||
@ -145,6 +147,7 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
||||||
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
||||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
||||||
|
ContainerWrapper::getInstance()->get(Mailer::class),
|
||||||
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
||||||
ContainerWrapper::getInstance()->get(Emoji::class)
|
ContainerWrapper::getInstance()->get(Emoji::class)
|
||||||
);
|
);
|
||||||
@ -200,6 +203,7 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
||||||
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
||||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
||||||
|
ContainerWrapper::getInstance()->get(Mailer::class),
|
||||||
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
||||||
$emoji
|
$emoji
|
||||||
);
|
);
|
||||||
@ -574,6 +578,7 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
||||||
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
||||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
||||||
|
ContainerWrapper::getInstance()->get(Mailer::class),
|
||||||
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
||||||
ContainerWrapper::getInstance()->get(Emoji::class)
|
ContainerWrapper::getInstance()->get(Emoji::class)
|
||||||
);
|
);
|
||||||
@ -825,19 +830,17 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
function testItCanSendAPreview() {
|
function testItCanSendAPreview() {
|
||||||
|
|
||||||
$subscriber = 'test@subscriber.com';
|
$subscriber = 'test@subscriber.com';
|
||||||
$unsubscribeLink = $this->subscription_url_factory->getUnsubscribeUrl(null);
|
|
||||||
$manageLink = $this->subscription_url_factory->getManageUrl(null);
|
|
||||||
$viewInBrowserLink = Url::getViewInBrowserUrl(null, $this->newsletter, false, false, true);
|
$endpoint = Stub::copy($this->endpoint, [
|
||||||
$mailerMetaInfo = new MetaInfo;
|
'mailer' => $this->makeEmpty(
|
||||||
$data = [
|
Mailer::class,
|
||||||
'subscriber' => $subscriber,
|
|
||||||
'id' => $this->newsletter->id,
|
|
||||||
'mailer' => Stub::makeEmpty(
|
|
||||||
'\MailPoet\Mailer\Mailer',
|
|
||||||
[
|
[
|
||||||
'send' => function($newsletter, $subscriber, $extra_params)
|
'send' => function ($newsletter, $subscriber, $extra_params) {
|
||||||
use ($unsubscribeLink, $manageLink, $viewInBrowserLink, $mailerMetaInfo)
|
$unsubscribeLink = $this->subscription_url_factory->getUnsubscribeUrl(null);
|
||||||
{
|
$manageLink = $this->subscription_url_factory->getManageUrl(null);
|
||||||
|
$viewInBrowserLink = Url::getViewInBrowserUrl(null, $this->newsletter, false, false, true);
|
||||||
|
$mailerMetaInfo = new MetaInfo;
|
||||||
|
|
||||||
expect(is_array($newsletter))->true();
|
expect(is_array($newsletter))->true();
|
||||||
expect($newsletter['body']['text'])->contains('Hello test');
|
expect($newsletter['body']['text'])->contains('Hello test');
|
||||||
@ -852,27 +855,31 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'subscriber' => $subscriber,
|
||||||
|
'id' => $this->newsletter->id,
|
||||||
];
|
];
|
||||||
$response = $this->endpoint->sendPreview($data);
|
$response = $endpoint->sendPreview($data);
|
||||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItReturnsMailerErrorWhenSendingFailed() {
|
function testItReturnsMailerErrorWhenSendingFailed() {
|
||||||
$subscriber = 'test@subscriber.com';
|
$subscriber = 'test@subscriber.com';
|
||||||
$data = [
|
|
||||||
'subscriber' => $subscriber,
|
$endpoint = Stub::copy($this->endpoint, [
|
||||||
'id' => $this->newsletter->id,
|
'mailer' => $this->makeEmpty(
|
||||||
'mailer' => Stub::makeEmpty(
|
Mailer::class,
|
||||||
'\MailPoet\Mailer\Mailer',
|
|
||||||
[
|
[
|
||||||
'send' => function($newsletter, $subscriber) {
|
'send' => function ($newsletter, $subscriber) {
|
||||||
expect(is_array($newsletter))->true();
|
expect(is_array($newsletter))->true();
|
||||||
expect($newsletter['body']['text'])->contains('Hello test');
|
expect($newsletter['body']['text'])->contains('Hello test');
|
||||||
expect($subscriber)->equals($subscriber);
|
expect($subscriber)->equals($subscriber);
|
||||||
return [
|
return [
|
||||||
'response' => false,
|
'response' => false,
|
||||||
'error' => Stub::make(
|
'error' => $this->make(
|
||||||
'\MailPoet\Mailer\MailerError',
|
MailerError::class,
|
||||||
[
|
[
|
||||||
'getMessage' => 'failed',
|
'getMessage' => 'failed',
|
||||||
]
|
]
|
||||||
@ -881,8 +888,13 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'subscriber' => $subscriber,
|
||||||
|
'id' => $this->newsletter->id,
|
||||||
];
|
];
|
||||||
$response = $this->endpoint->sendPreview($data);
|
$response = $endpoint->sendPreview($data);
|
||||||
expect($response->errors[0]['message'])->equals('The email could not be sent: failed');
|
expect($response->errors[0]['message'])->equals('The email could not be sent: failed');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -915,6 +927,7 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
||||||
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
||||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
||||||
|
ContainerWrapper::getInstance()->get(Mailer::class),
|
||||||
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
ContainerWrapper::getInstance()->get(MetaInfo::class),
|
||||||
$emoji
|
$emoji
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user