Add meta when sending previews
[MAILPOET-2333]
This commit is contained in:
committed by
Jack Kitterhing
parent
8594645e0d
commit
723cb368c4
@ -10,6 +10,7 @@ use MailPoet\Config\AccessControl;
|
||||
use MailPoet\Cron\CronHelper;
|
||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask;
|
||||
use MailPoet\Listing;
|
||||
use MailPoet\Mailer\MetaInfo;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
@ -61,6 +62,9 @@ class Newsletters extends APIEndpoint {
|
||||
/** @var PostNotificationScheduler */
|
||||
private $post_notification_scheduler;
|
||||
|
||||
/** @var MetaInfo */
|
||||
private $mailerMetaInfo;
|
||||
|
||||
function __construct(
|
||||
Listing\BulkActionController $bulk_action,
|
||||
Listing\Handler $listing_handler,
|
||||
@ -70,7 +74,8 @@ class Newsletters extends APIEndpoint {
|
||||
AuthorizedEmailsController $authorized_emails_controller,
|
||||
NewslettersRepository $newsletters_repository,
|
||||
NewslettersResponseBuilder $newsletters_response_builder,
|
||||
PostNotificationScheduler $post_notification_scheduler
|
||||
PostNotificationScheduler $post_notification_scheduler,
|
||||
MetaInfo $mailerMetaInfo
|
||||
) {
|
||||
$this->bulk_action = $bulk_action;
|
||||
$this->listing_handler = $listing_handler;
|
||||
@ -81,6 +86,7 @@ class Newsletters extends APIEndpoint {
|
||||
$this->newsletters_repository = $newsletters_repository;
|
||||
$this->newsletters_response_builder = $newsletters_response_builder;
|
||||
$this->post_notification_scheduler = $post_notification_scheduler;
|
||||
$this->mailerMetaInfo = $mailerMetaInfo;
|
||||
}
|
||||
|
||||
function get($data = []) {
|
||||
@ -455,7 +461,10 @@ class Newsletters extends APIEndpoint {
|
||||
$mailer = (!empty($data['mailer'])) ?
|
||||
$data['mailer'] :
|
||||
new \MailPoet\Mailer\Mailer();
|
||||
$extra_params = ['unsubscribe_url' => WPFunctions::get()->homeUrl()];
|
||||
$extra_params = [
|
||||
'unsubscribe_url' => WPFunctions::get()->homeUrl(),
|
||||
'meta' => $this->mailerMetaInfo->getPreviewMetaInfo(),
|
||||
];
|
||||
$result = $mailer->send($rendered_newsletter, $data['subscriber'], $extra_params);
|
||||
|
||||
if ($result['response'] === false) {
|
||||
|
@ -6,6 +6,10 @@ class MetaInfo {
|
||||
return $this->makeMetaInfo('sending_test', 'unknown', 'administrator');
|
||||
}
|
||||
|
||||
function getPreviewMetaInfo() {
|
||||
return $this->makeMetaInfo('preview', 'unknown', 'administrator');
|
||||
}
|
||||
|
||||
private function makeMetaInfo($email_type, $subscriber_status, $subscriber_source) {
|
||||
return [
|
||||
'email_type' => $email_type,
|
||||
|
@ -13,6 +13,7 @@ use MailPoet\API\JSON\v1\Newsletters;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Listing\BulkActionController;
|
||||
use MailPoet\Listing\Handler;
|
||||
use MailPoet\Mailer\MetaInfo;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
@ -132,7 +133,8 @@ class NewslettersTest extends \MailPoetTest {
|
||||
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]),
|
||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
||||
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class)
|
||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
||||
ContainerWrapper::getInstance()->get(MetaInfo::class)
|
||||
);
|
||||
$response = $this->endpoint->get(['id' => $this->newsletter->id]);
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
@ -175,7 +177,8 @@ class NewslettersTest extends \MailPoetTest {
|
||||
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::once()]),
|
||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
||||
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class)
|
||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
||||
ContainerWrapper::getInstance()->get(MetaInfo::class)
|
||||
);
|
||||
|
||||
$response = $this->endpoint->save($valid_data);
|
||||
@ -546,7 +549,8 @@ class NewslettersTest extends \MailPoetTest {
|
||||
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]),
|
||||
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
|
||||
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
|
||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class)
|
||||
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
|
||||
ContainerWrapper::getInstance()->get(MetaInfo::class)
|
||||
);
|
||||
|
||||
$response = $this->endpoint->duplicate(['id' => $this->newsletter->id]);
|
||||
@ -798,6 +802,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
$unsubscribeLink = SubscriptionUrl::getUnsubscribeUrl(null);
|
||||
$manageLink = SubscriptionUrl::getManageUrl(null);
|
||||
$viewInBrowserLink = Url::getViewInBrowserUrl(null, $this->newsletter, false, false, true);
|
||||
$mailerMetaInfo = new MetaInfo;
|
||||
$data = [
|
||||
'subscriber' => $subscriber,
|
||||
'id' => $this->newsletter->id,
|
||||
@ -805,12 +810,14 @@ class NewslettersTest extends \MailPoetTest {
|
||||
'\MailPoet\Mailer\Mailer',
|
||||
[
|
||||
'send' => function($newsletter, $subscriber, $extra_params)
|
||||
use ($unsubscribeLink, $manageLink, $viewInBrowserLink)
|
||||
use ($unsubscribeLink, $manageLink, $viewInBrowserLink, $mailerMetaInfo)
|
||||
{
|
||||
|
||||
expect(is_array($newsletter))->true();
|
||||
expect($newsletter['body']['text'])->contains('Hello test');
|
||||
expect($subscriber)->equals($subscriber);
|
||||
expect($extra_params['unsubscribe_url'])->equals(home_url());
|
||||
expect($extra_params['meta'])->equals($mailerMetaInfo->getPreviewMetaInfo());
|
||||
// system links are replaced with hashes
|
||||
expect($newsletter['body']['html'])->contains('href="' . $viewInBrowserLink . '">View in browser');
|
||||
expect($newsletter['body']['html'])->contains('href="' . $unsubscribeLink . '">Unsubscribe');
|
||||
|
@ -19,4 +19,12 @@ class MetaInfoTest extends \MailPoetUnitTest {
|
||||
'subscriber_source' => 'administrator',
|
||||
]);
|
||||
}
|
||||
|
||||
function testItGetsMetaInfoForPreview() {
|
||||
expect($this->meta->getPreviewMetaInfo())->equals([
|
||||
'email_type' => 'preview',
|
||||
'subscriber_status' => 'unknown',
|
||||
'subscriber_source' => 'administrator',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user