Add meta when sending confirmation emails

[MAILPOET-2333]
This commit is contained in:
Amine Ben hammou
2019-09-13 03:09:54 +01:00
committed by Jack Kitterhing
parent 553df6c135
commit eebe6e828f
4 changed files with 42 additions and 3 deletions

View File

@ -1,6 +1,8 @@
<?php
namespace MailPoet\Mailer;
use MailPoet\Models\Subscriber;
class MetaInfo {
function getSendingTestMetaInfo() {
return $this->makeMetaInfo('sending_test', 'unknown', 'administrator');
@ -18,6 +20,10 @@ class MetaInfo {
return $this->makeMetaInfo('transactional', 'unknown', 'administrator');
}
function getConfirmationMetaInfo(Subscriber $subscriber) {
return $this->makeMetaInfo('confirmation', $subscriber->status, $subscriber->source);
}
private function makeMetaInfo($email_type, $subscriber_status, $subscriber_source) {
return [
'email_type' => $email_type,

View File

@ -4,6 +4,7 @@ namespace MailPoet\Subscribers;
use Html2Text\Html2Text;
use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\Subscriber;
use MailPoet\Services\AuthorizedEmailsController;
use MailPoet\Services\Bridge;
@ -25,6 +26,9 @@ class ConfirmationEmailMailer {
/** @var SettingsController */
private $settings;
/** @var MetaInfo */
private $mailerMetaInfo;
/**
* @param Mailer|null $mailer
*/
@ -38,6 +42,7 @@ class ConfirmationEmailMailer {
$this->wp = new WPFunctions;
}
$this->settings = new SettingsController();
$this->mailerMetaInfo = new MetaInfo;
}
function sendConfirmationEmail(Subscriber $subscriber) {
@ -96,7 +101,10 @@ class ConfirmationEmailMailer {
$this->mailer = new Mailer();
}
$this->mailer->init();
$result = $this->mailer->send($email, $subscriber);
$extra_params = [
'meta' => $this->mailerMetaInfo->getConfirmationMetaInfo($subscriber),
];
$result = $this->mailer->send($email, $subscriber, $extra_params);
if ($result['response'] === false) {
$subscriber->setError(__('Something went wrong with your subscription. Please contact the website owner.', 'mailpoet'));
return false;

View File

@ -3,12 +3,14 @@ namespace MailPoet\Test\Mailer;
use Codeception\Stub;
use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\Subscriber;
class MetaInfoTest extends \MailPoetUnitTest {
class MetaInfoTest extends \MailPoetTest {
/** @var MetaInfo */
private $meta;
function _before() {
parent::_before();
$this->meta = new MetaInfo;
}
@ -44,4 +46,20 @@ class MetaInfoTest extends \MailPoetUnitTest {
]);
}
function testItGetsMetaInfoForConfirmationEmails() {
$subscriber = Subscriber::createOrUpdate([
'email' => 'meta@test.fake',
'status' => 'unconfirmed',
'source' => 'form',
]);
expect($this->meta->getConfirmationMetaInfo($subscriber))->equals([
'email_type' => 'confirmation',
'subscriber_status' => 'unconfirmed',
'subscriber_source' => 'form',
]);
}
function _after() {
Subscriber::deleteMany();
}
}

View File

@ -23,13 +23,20 @@ class ConfirmationEmailMailerTest extends \MailPoetTest {
'first_name' => 'John',
'last_name' => 'Mailer',
'email' => 'john@mailpoet.com',
'status' => 'unconfirmed',
'source' => 'api',
]);
$mailer = Stub::makeEmpty(Mailer::class, [
'send' =>
Stub\Expected::once(function($email) {
Stub\Expected::once(function($email, $subscriber, $extra_params) {
expect($email['body']['html'])->contains('<strong>Test segment</strong>');
expect($email['body']['html'])->contains('<a target="_blank" href="http://example.com">I confirm my subscription!</a>');
expect($extra_params['meta'])->equals([
'email_type' => 'confirmation',
'subscriber_status' => 'unconfirmed',
'subscriber_source' => 'api',
]);
}),
], $this);