Add meta to test emails

[MAILPOET-2333]
This commit is contained in:
Amine Ben hammou
2019-09-12 23:42:05 +01:00
committed by Jack Kitterhing
parent 5a3994ab5d
commit 8594645e0d
4 changed files with 45 additions and 4 deletions

View File

@ -6,6 +6,7 @@ use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\Error as APIError; use MailPoet\API\JSON\Error as APIError;
use MailPoet\Config\AccessControl; use MailPoet\Config\AccessControl;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Mailer\MetaInfo;
use MailPoet\Services\AuthorizedEmailsController; use MailPoet\Services\AuthorizedEmailsController;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
@ -22,14 +23,18 @@ class Mailer extends APIEndpoint {
/** @var SettingsController */ /** @var SettingsController */
private $settings; private $settings;
/** @var MetaInfo */
private $mailerMetaInfo;
public $permissions = [ public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_EMAILS, 'global' => AccessControl::PERMISSION_MANAGE_EMAILS,
]; ];
function __construct(AuthorizedEmailsController $authorized_emails_controller, SettingsController $settings, Bridge $bridge) { function __construct(AuthorizedEmailsController $authorized_emails_controller, SettingsController $settings, Bridge $bridge, MetaInfo $mailerMetaInfo) {
$this->authorized_emails_controller = $authorized_emails_controller; $this->authorized_emails_controller = $authorized_emails_controller;
$this->settings = $settings; $this->settings = $settings;
$this->bridge = $bridge; $this->bridge = $bridge;
$this->mailerMetaInfo = $mailerMetaInfo;
} }
function send($data = []) { function send($data = []) {
@ -40,7 +45,10 @@ class Mailer extends APIEndpoint {
(isset($data['sender'])) ? $data['sender'] : false, (isset($data['sender'])) ? $data['sender'] : false,
(isset($data['reply_to'])) ? $data['reply_to'] : false (isset($data['reply_to'])) ? $data['reply_to'] : false
); );
$result = $mailer->send($data['newsletter'], $data['subscriber']); $extra_params = [
'meta' => $this->mailerMetaInfo->getSendingTestMetaInfo(),
];
$result = $mailer->send($data['newsletter'], $data['subscriber'], $extra_params);
} catch (\Exception $e) { } catch (\Exception $e) {
return $this->errorResponse([ return $this->errorResponse([
$e->getCode() => $e->getMessage(), $e->getCode() => $e->getMessage(),

View File

@ -2,5 +2,15 @@
namespace MailPoet\Mailer; namespace MailPoet\Mailer;
class MetaInfo { class MetaInfo {
function getSendingTestMetaInfo() {
return $this->makeMetaInfo('sending_test', 'unknown', 'administrator');
}
private function makeMetaInfo($email_type, $subscriber_status, $subscriber_source) {
return [
'email_type' => $email_type,
'subscriber_status' => $subscriber_status,
'subscriber_source' => $subscriber_source,
];
}
} }

View File

@ -5,6 +5,7 @@ use Codeception\Stub\Expected;
use MailPoet\API\JSON\v1\Mailer; use MailPoet\API\JSON\v1\Mailer;
use MailPoet\API\JSON\Response as APIResponse; use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Mailer\MetaInfo;
use MailPoet\Services\AuthorizedEmailsController; use MailPoet\Services\AuthorizedEmailsController;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
@ -20,7 +21,7 @@ class MailerTest extends \MailPoetTest {
$authorized_emails_controller = $this->makeEmpty(AuthorizedEmailsController::class, ['checkAuthorizedEmailAddresses' => Expected::never()]); $authorized_emails_controller = $this->makeEmpty(AuthorizedEmailsController::class, ['checkAuthorizedEmailAddresses' => Expected::never()]);
// resumeSending() method should clear the mailer log's status // resumeSending() method should clear the mailer log's status
$bridge = new Bridge($settings); $bridge = new Bridge($settings);
$mailer_endpoint = new Mailer($authorized_emails_controller, $settings, $bridge); $mailer_endpoint = new Mailer($authorized_emails_controller, $settings, $bridge, new MetaInfo);
$response = $mailer_endpoint->resumeSending(); $response = $mailer_endpoint->resumeSending();
expect($response->status)->equals(APIResponse::STATUS_OK); expect($response->status)->equals(APIResponse::STATUS_OK);
$mailer_log = MailerLog::getMailerLog(); $mailer_log = MailerLog::getMailerLog();
@ -32,7 +33,7 @@ class MailerTest extends \MailPoetTest {
$settings->set(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING, ['invalid_sender_address' => 'a@b.c']); $settings->set(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING, ['invalid_sender_address' => 'a@b.c']);
$authorized_emails_controller = $this->makeEmpty(AuthorizedEmailsController::class, ['checkAuthorizedEmailAddresses' => Expected::once()]); $authorized_emails_controller = $this->makeEmpty(AuthorizedEmailsController::class, ['checkAuthorizedEmailAddresses' => Expected::once()]);
$bridge = new Bridge($settings); $bridge = new Bridge($settings);
$mailer_endpoint = new Mailer($authorized_emails_controller, $settings, $bridge); $mailer_endpoint = new Mailer($authorized_emails_controller, $settings, $bridge, new MetaInfo);
$mailer_endpoint->resumeSending(); $mailer_endpoint->resumeSending();
} }
} }

View File

@ -0,0 +1,22 @@
<?php
namespace MailPoet\Test\Mailer;
use Codeception\Stub;
use MailPoet\Mailer\MetaInfo;
class MetaInfoTest extends \MailPoetUnitTest {
/** @var MetaInfo */
private $meta;
function _before() {
$this->meta = new MetaInfo;
}
function testItGetsMetaInfoForSendingTest() {
expect($this->meta->getSendingTestMetaInfo())->equals([
'email_type' => 'sending_test',
'subscriber_status' => 'unknown',
'subscriber_source' => 'administrator',
]);
}
}