Fix Subscription pages integration tests
[MAILPOET-2847]
This commit is contained in:
committed by
Veljko V
parent
0427977f8c
commit
85399fb612
@ -169,7 +169,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Features\FeatureFlagsRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Features\FeatureFlagsRepository::class)->setPublic(true);
|
||||||
// Form
|
// Form
|
||||||
$container->autowire(\MailPoet\Form\Util\FieldNameObfuscator::class)->setPublic(true);
|
$container->autowire(\MailPoet\Form\Util\FieldNameObfuscator::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Form\AssetsController::class);
|
$container->autowire(\MailPoet\Form\AssetsController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Form\DisplayFormInWPContent::class);
|
$container->autowire(\MailPoet\Form\DisplayFormInWPContent::class);
|
||||||
$container->autowire(\MailPoet\Form\FormsRepository::class);
|
$container->autowire(\MailPoet\Form\FormsRepository::class);
|
||||||
$container->autowire(\MailPoet\Form\Renderer::class)->setPublic(true);
|
$container->autowire(\MailPoet\Form\Renderer::class)->setPublic(true);
|
||||||
@ -180,7 +180,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Form\Block\Column::class);
|
$container->autowire(\MailPoet\Form\Block\Column::class);
|
||||||
$container->autowire(\MailPoet\Form\Block\Columns::class);
|
$container->autowire(\MailPoet\Form\Block\Columns::class);
|
||||||
$container->autowire(\MailPoet\Form\Block\Checkbox::class);
|
$container->autowire(\MailPoet\Form\Block\Checkbox::class);
|
||||||
$container->autowire(\MailPoet\Form\Block\Date::class);
|
$container->autowire(\MailPoet\Form\Block\Date::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Form\Block\Divider::class);
|
$container->autowire(\MailPoet\Form\Block\Divider::class);
|
||||||
$container->autowire(\MailPoet\Form\Block\Html::class);
|
$container->autowire(\MailPoet\Form\Block\Html::class);
|
||||||
$container->autowire(\MailPoet\Form\Block\Heading::class);
|
$container->autowire(\MailPoet\Form\Block\Heading::class);
|
||||||
@ -258,13 +258,13 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Subscription\Pages::class)->setPublic(true)
|
$container->autowire(\MailPoet\Subscription\Pages::class)->setPublic(true)
|
||||||
->setShared(false); // Get a new instance each time $container->get() is called, needed for tests
|
->setShared(false); // Get a new instance each time $container->get() is called, needed for tests
|
||||||
$container->autowire(\MailPoet\Subscription\Registration::class)->setPublic(true);
|
$container->autowire(\MailPoet\Subscription\Registration::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Subscription\SubscriptionUrlFactory::class);
|
$container->autowire(\MailPoet\Subscription\SubscriptionUrlFactory::class)->setPublic(true);
|
||||||
// Newsletter
|
// Newsletter
|
||||||
$container->autowire(\MailPoet\Newsletter\AutomatedLatestContent::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\AutomatedLatestContent::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\NewslettersRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\NewslettersRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\Listing\NewsletterListingRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\Listing\NewsletterListingRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository::class);
|
$container->autowire(\MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository::class);
|
||||||
$container->autowire(\MailPoet\Newsletter\Scheduler\WelcomeScheduler::class);
|
$container->autowire(\MailPoet\Newsletter\Scheduler\WelcomeScheduler::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\Scheduler\PostNotificationScheduler::class);
|
$container->autowire(\MailPoet\Newsletter\Scheduler\PostNotificationScheduler::class);
|
||||||
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserRenderer::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserRenderer::class)->setPublic(true);
|
||||||
|
@ -5,6 +5,9 @@ namespace MailPoet\Test\Subscription;
|
|||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
use Codeception\Util\Fixtures;
|
use Codeception\Util\Fixtures;
|
||||||
use MailPoet\DI\ContainerWrapper;
|
use MailPoet\DI\ContainerWrapper;
|
||||||
|
use MailPoet\Form\AssetsController;
|
||||||
|
use MailPoet\Form\Block\Date as FormBlockDate;
|
||||||
|
use MailPoet\Form\Renderer as FormRenderer;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterOption;
|
use MailPoet\Models\NewsletterOption;
|
||||||
use MailPoet\Models\NewsletterOptionField;
|
use MailPoet\Models\NewsletterOptionField;
|
||||||
@ -13,15 +16,19 @@ use MailPoet\Models\Segment;
|
|||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Models\SubscriberSegment;
|
use MailPoet\Models\SubscriberSegment;
|
||||||
|
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
use MailPoet\Subscribers\NewSubscriberNotificationMailer;
|
use MailPoet\Subscribers\NewSubscriberNotificationMailer;
|
||||||
|
use MailPoet\Subscription\CaptchaRenderer;
|
||||||
use MailPoet\Subscription\Pages;
|
use MailPoet\Subscription\Pages;
|
||||||
|
use MailPoet\Subscription\SubscriptionUrlFactory;
|
||||||
|
use MailPoet\Util\Url as UrlHelper;
|
||||||
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
use MailPoetVendor\Idiorm\ORM;
|
use MailPoetVendor\Idiorm\ORM;
|
||||||
|
|
||||||
class PagesTest extends \MailPoetTest {
|
class PagesTest extends \MailPoetTest {
|
||||||
public $pages;
|
|
||||||
|
|
||||||
private $testData = [];
|
private $testData = [];
|
||||||
|
|
||||||
/** @var Subscriber */
|
/** @var Subscriber */
|
||||||
@ -37,12 +44,12 @@ class PagesTest extends \MailPoetTest {
|
|||||||
expect($this->subscriber->getErrors())->false();
|
expect($this->subscriber->getErrors())->false();
|
||||||
$this->testData['email'] = $this->subscriber->email;
|
$this->testData['email'] = $this->subscriber->email;
|
||||||
$this->testData['token'] = $linkTokens->getToken($this->subscriber);
|
$this->testData['token'] = $linkTokens->getToken($this->subscriber);
|
||||||
$this->pages = ContainerWrapper::getInstance()->get(Pages::class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItConfirmsSubscription() {
|
public function testItConfirmsSubscription() {
|
||||||
$newSubscriberNotificationSender = Stub::makeEmpty(NewSubscriberNotificationMailer::class, ['send' => Stub\Expected::once()]);
|
$newSubscriberNotificationSender = $this->makeEmpty(NewSubscriberNotificationMailer::class, ['send' => Stub\Expected::once()]);
|
||||||
$subscription = $this->pages->init($action = false, $this->testData, false, false, $newSubscriberNotificationSender);
|
$pages = $this->getPages($newSubscriberNotificationSender);
|
||||||
|
$subscription = $pages->init($action = false, $this->testData, false, false);
|
||||||
$subscription->confirm();
|
$subscription->confirm();
|
||||||
$confirmedSubscriber = Subscriber::findOne($this->subscriber->id);
|
$confirmedSubscriber = Subscriber::findOne($this->subscriber->id);
|
||||||
expect($confirmedSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
expect($confirmedSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
||||||
@ -51,17 +58,19 @@ class PagesTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItDoesNotConfirmSubscriptionOnDuplicateAttempt() {
|
public function testItDoesNotConfirmSubscriptionOnDuplicateAttempt() {
|
||||||
$newSubscriberNotificationSender = Stub::makeEmpty(NewSubscriberNotificationMailer::class, ['send' => Stub\Expected::once()]);
|
$newSubscriberNotificationSender = $this->makeEmpty(NewSubscriberNotificationMailer::class, ['send' => Stub\Expected::never()]);
|
||||||
|
$pages = $this->getPages($newSubscriberNotificationSender);
|
||||||
$subscriber = $this->subscriber;
|
$subscriber = $this->subscriber;
|
||||||
$subscriber->status = Subscriber::STATUS_SUBSCRIBED;
|
$subscriber->status = Subscriber::STATUS_SUBSCRIBED;
|
||||||
$subscriber->save();
|
$subscriber->save();
|
||||||
$subscription = $this->pages->init($action = false, $this->testData, false, false, $newSubscriberNotificationSender);
|
$subscription = $pages->init($action = false, $this->testData, false, false);
|
||||||
expect($subscription->confirm())->false();
|
expect($subscription->confirm())->false();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItSendsWelcomeNotificationUponConfirmingSubscription() {
|
public function testItSendsWelcomeNotificationUponConfirmingSubscription() {
|
||||||
$newSubscriberNotificationSender = Stub::makeEmpty(NewSubscriberNotificationMailer::class, ['send' => Stub\Expected::once()]);
|
$newSubscriberNotificationSender = $this->makeEmpty(NewSubscriberNotificationMailer::class, ['send' => Stub\Expected::once()]);
|
||||||
$subscription = $this->pages->init($action = false, $this->testData, false, false, $newSubscriberNotificationSender);
|
$pages = $this->getPages($newSubscriberNotificationSender);
|
||||||
|
$subscription = $pages->init($action = false, $this->testData, false, false);
|
||||||
// create segment
|
// create segment
|
||||||
$segment = Segment::create();
|
$segment = Segment::create();
|
||||||
$segment->hydrate(['name' => 'List #1']);
|
$segment->hydrate(['name' => 'List #1']);
|
||||||
@ -114,7 +123,7 @@ class PagesTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItUnsubscribes() {
|
public function testItUnsubscribes() {
|
||||||
$pages = $this->pages->init($action = 'unsubscribe', $this->testData);
|
$pages = $this->getPages()->init($action = 'unsubscribe', $this->testData);
|
||||||
$pages->unsubscribe();
|
$pages->unsubscribe();
|
||||||
$updatedSubscriber = Subscriber::findOne($this->subscriber->id);
|
$updatedSubscriber = Subscriber::findOne($this->subscriber->id);
|
||||||
expect($updatedSubscriber->status)->equals(Subscriber::STATUS_UNSUBSCRIBED);
|
expect($updatedSubscriber->status)->equals(Subscriber::STATUS_UNSUBSCRIBED);
|
||||||
@ -122,7 +131,7 @@ class PagesTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItDoesntUnsubscribeWhenPreviewing() {
|
public function testItDoesntUnsubscribeWhenPreviewing() {
|
||||||
$this->testData['preview'] = 1;
|
$this->testData['preview'] = 1;
|
||||||
$pages = $this->pages->init($action = 'unsubscribe', $this->testData);
|
$pages = $this->getPages()->init($action = 'unsubscribe', $this->testData);
|
||||||
$pages->unsubscribe();
|
$pages->unsubscribe();
|
||||||
$updatedSubscriber = Subscriber::findOne($this->subscriber->id);
|
$updatedSubscriber = Subscriber::findOne($this->subscriber->id);
|
||||||
expect($updatedSubscriber->status)->notEquals(Subscriber::STATUS_UNSUBSCRIBED);
|
expect($updatedSubscriber->status)->notEquals(Subscriber::STATUS_UNSUBSCRIBED);
|
||||||
@ -138,4 +147,21 @@ class PagesTest extends \MailPoetTest {
|
|||||||
ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||||
ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getPages(NewSubscriberNotificationMailer $newSubscriberNotificationsMock = null): Pages {
|
||||||
|
$container = ContainerWrapper::getInstance();
|
||||||
|
return new Pages(
|
||||||
|
$newSubscriberNotificationsMock ?? $container->get(NewSubscriberNotificationMailer::class),
|
||||||
|
$container->get(WPFunctions::class),
|
||||||
|
$container->get(SettingsController::class),
|
||||||
|
$container->get(UrlHelper::class),
|
||||||
|
$container->get(CaptchaRenderer::class),
|
||||||
|
$container->get(WelcomeScheduler::class),
|
||||||
|
$container->get(LinkTokens::class),
|
||||||
|
$container->get(SubscriptionUrlFactory::class),
|
||||||
|
$container->get(AssetsController::class),
|
||||||
|
$container->get(FormRenderer::class),
|
||||||
|
$container->get(FormBlockDate::class)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user