Files
piratepoet/tests/integration/Subscribers/NewSubscriberNotificationMailerTest.php

103 lines
4.0 KiB
PHP

<?php
namespace MailPoet\Subscribers;
use Codeception\Stub;
use Codeception\Stub\Expected;
use MailPoet\Mailer\Mailer;
use MailPoet\Models\Segment;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
class NewSubscriberNotificationMailerTest extends \MailPoetTest {
/** @var Subscriber */
private $subscriber;
/** @var Segment[] */
private $segments;
function _before() {
$this->subscriber = Subscriber::create();
$this->subscriber->email = 'subscriber@example.com';
$this->segments = [Segment::create(), Segment::create()];
$this->segments[0]->name = 'List1';
$this->segments[1]->name = 'List2';
}
function testItDoesNotSendIfNoSettings() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, null);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItDoesNotSendIfSettingsDoesNotHaveEnabled() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, []);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItDoesNotSendIfSettingsDoesNotHaveAddress() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false]);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItDoesNotSendIfDisabled() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false, 'address' => 'a@b.c']);
$mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItSends() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true, 'address' => 'a@b.c']);
$mailer = Stub::makeEmpty(Mailer::class, [
'getSenderNameAndAddress' =>
Expected::once(function($sender) {
expect($sender)->count(2);
expect($sender['address'])->startsWith('wordpress@');
expect($sender['name'])->startsWith('wordpress@');
}),
'send' =>
Expected::once(function($newsletter, $subscriber) {
expect($subscriber)->equals('a@b.c');
expect($newsletter)->hasKey('subject');
expect($newsletter)->hasKey('body');
expect($newsletter)->count(2);
expect($newsletter['subject'])->equals('New subscriber to List1, List2');
expect($newsletter['body'])->hasKey('html');
expect($newsletter['body'])->hasKey('text');
expect($newsletter['body'])->count(2);
expect($newsletter['body']['text'])->contains('subscriber@example.com');
expect($newsletter['body']['html'])->contains('subscriber@example.com');
}),
], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
function testItRemovesWwwFromSenderAddress() {
Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true,'address' => 'a@b.c']);
update_option( 'home', 'http://www.example.com/xyz' );
$mailer = Stub::makeEmpty(Mailer::class, [
'getSenderNameAndAddress' =>
Expected::once(function($sender) {
expect($sender)->count(2);
expect($sender['address'])->equals('wordpress@example.com');
expect($sender['name'])->equals('wordpress@example.com');
}),
], $this);
$service = new NewSubscriberNotificationMailer($mailer);
$service->send($this->subscriber, $this->segments);
}
}