Files
piratepoet/tests/integration/Mailer/MetaInfoTest.php
Rodrigo Primo 1dbedea50f Refactor MetaInfo::getConfirmationMetaInfo() to use Doctrine
This method is used only inside
ConfirmationEmailMailer::sendConfirmationEmail(). So I figured it was
best to refactor it as well to use SubscriberEntity instead of the old
Subscriber model as part of the task to do the same for the
ConfirmationEmailMailer class. I opted for this approach since it was a
straightforward change.

[MAILPOET-3815]
2021-12-13 16:03:07 +01:00

189 lines
5.8 KiB
PHP

<?php
namespace MailPoet\Test\Mailer;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\Newsletter;
use MailPoet\Models\Subscriber;
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
class MetaInfoTest extends \MailPoetTest {
/** @var MetaInfo */
private $meta;
public function _before() {
parent::_before();
$this->meta = new MetaInfo;
}
public function testItGetsMetaInfoForSendingTest() {
expect($this->meta->getSendingTestMetaInfo())->equals([
'email_type' => 'sending_test',
'subscriber_status' => 'unknown',
'subscriber_source' => 'administrator',
]);
}
public function testItGetsMetaInfoForPreview() {
expect($this->meta->getPreviewMetaInfo())->equals([
'email_type' => 'preview',
'subscriber_status' => 'unknown',
'subscriber_source' => 'administrator',
]);
}
public function testItGetsMetaInfoForStatsNotifications() {
expect($this->meta->getStatsNotificationMetaInfo())->equals([
'email_type' => 'email_stats_notification',
'subscriber_status' => 'unknown',
'subscriber_source' => 'administrator',
]);
}
public function testItGetsMetaInfoForWordPressTransactionalEmails() {
expect($this->meta->getWordPressTransactionalMetaInfo())->equals([
'email_type' => 'transactional',
'subscriber_status' => 'unknown',
'subscriber_source' => 'unknown',
]);
$subscriber = $this->make(SubscriberEntity::class, [
'getStatus' => 'subscribed',
'getSource' => 'form',
]);
expect($this->meta->getWordPressTransactionalMetaInfo($subscriber))->equals([
'email_type' => 'transactional',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'form',
]);
}
public function testItGetsMetaInfoForConfirmationEmails() {
$subscriberFactory = new SubscriberFactory();
$subscriber = $subscriberFactory->withStatus('unconfirmed')->withSource('form')->create();
expect($this->meta->getConfirmationMetaInfo($subscriber))->equals([
'email_type' => 'confirmation',
'subscriber_status' => 'unconfirmed',
'subscriber_source' => 'form',
]);
}
public function testItGetsMetaInfoForNewSubscriberNotifications() {
expect($this->meta->getNewSubscriberNotificationMetaInfo())->equals([
'email_type' => 'new_subscriber_notification',
'subscriber_status' => 'unknown',
'subscriber_source' => 'administrator',
]);
}
public function testItGetsMetaInfoForStandardNewsletter() {
$subscriber = Subscriber::create();
$subscriber->hydrate([
'status' => 'subscribed',
'source' => 'form',
]);
$newsletter = (object)[
'type' => Newsletter::TYPE_STANDARD,
];
expect($this->meta->getNewsletterMetaInfo($newsletter, $subscriber))->equals([
'email_type' => 'newsletter',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'form',
]);
}
public function testItGetsMetaInfoForWelcomeEmail() {
$subscriber = Subscriber::create();
$subscriber->hydrate([
'status' => 'subscribed',
'source' => 'form',
]);
$newsletter = (object)[
'type' => Newsletter::TYPE_WELCOME,
];
expect($this->meta->getNewsletterMetaInfo($newsletter, $subscriber))->equals([
'email_type' => 'welcome',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'form',
]);
}
public function testItGetsMetaInfoForPostNotification() {
$subscriber = Subscriber::create();
$subscriber->hydrate([
'status' => 'subscribed',
'source' => 'form',
]);
$newsletter1 = (object)[
'type' => Newsletter::TYPE_NOTIFICATION,
];
$newsletter2 = (object)[
'type' => Newsletter::TYPE_NOTIFICATION_HISTORY,
];
expect($this->meta->getNewsletterMetaInfo($newsletter1, $subscriber))->equals([
'email_type' => 'post_notification',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'form',
]);
expect($this->meta->getNewsletterMetaInfo($newsletter2, $subscriber))->equals([
'email_type' => 'post_notification',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'form',
]);
}
public function testItGetsMetaInfoForAutomaticEmails() {
$subscriber = Subscriber::create();
$subscriber->hydrate([
'status' => 'subscribed',
'source' => 'form',
]);
$newsletter1 = (object)[
'type' => Newsletter::TYPE_AUTOMATIC,
'options' => [
'group' => 'woocommerce',
'event' => 'woocommerce_first_purchase',
],
];
$newsletter2 = (object)[
'type' => Newsletter::TYPE_AUTOMATIC,
'options' => [
'group' => 'woocommerce',
'event' => 'woocommerce_purchased_in_category',
],
];
expect($this->meta->getNewsletterMetaInfo($newsletter1, $subscriber))->equals([
'email_type' => 'automatic_woocommerce_woocommerce_first_purchase',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'form',
]);
expect($this->meta->getNewsletterMetaInfo($newsletter2, $subscriber))->equals([
'email_type' => 'automatic_woocommerce_woocommerce_purchased_in_category',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'form',
]);
}
public function testItSetsUnknownSubscriberSourceWhenNull() {
$subscriber = Subscriber::create();
$subscriber->hydrate([
'status' => 'subscribed',
'source' => null,
]);
$newsletter = (object)[
'type' => Newsletter::TYPE_STANDARD,
];
expect($this->meta->getNewsletterMetaInfo($newsletter, $subscriber))->equals([
'email_type' => 'newsletter',
'subscriber_status' => 'subscribed',
'subscriber_source' => 'unknown',
]);
}
public function _after() {
Subscriber::deleteMany();
}
}