diff --git a/lib/Mailer/MetaInfo.php b/lib/Mailer/MetaInfo.php index b28cb3d4ec..f40c7287d4 100644 --- a/lib/Mailer/MetaInfo.php +++ b/lib/Mailer/MetaInfo.php @@ -1,6 +1,8 @@ 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, diff --git a/lib/Subscribers/ConfirmationEmailMailer.php b/lib/Subscribers/ConfirmationEmailMailer.php index a70fb1f48d..0ec96238a8 100644 --- a/lib/Subscribers/ConfirmationEmailMailer.php +++ b/lib/Subscribers/ConfirmationEmailMailer.php @@ -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; diff --git a/tests/unit/Mailer/MetaInfoTest.php b/tests/integration/Mailer/MetaInfoTest.php similarity index 68% rename from tests/unit/Mailer/MetaInfoTest.php rename to tests/integration/Mailer/MetaInfoTest.php index 905085d702..917b14057d 100644 --- a/tests/unit/Mailer/MetaInfoTest.php +++ b/tests/integration/Mailer/MetaInfoTest.php @@ -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(); + } } diff --git a/tests/integration/Subscribers/ConfirmationEmailMailerTest.php b/tests/integration/Subscribers/ConfirmationEmailMailerTest.php index 3b63165d6a..cf77db1f09 100644 --- a/tests/integration/Subscribers/ConfirmationEmailMailerTest.php +++ b/tests/integration/Subscribers/ConfirmationEmailMailerTest.php @@ -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('Test segment'); expect($email['body']['html'])->contains('I confirm my subscription!'); + expect($extra_params['meta'])->equals([ + 'email_type' => 'confirmation', + 'subscriber_status' => 'unconfirmed', + 'subscriber_source' => 'api', + ]); }), ], $this);