Replace repeating code with using factory
[MAILPOET-4141]
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace MailPoet\Test\API\JSON\v1;
|
namespace MailPoet\Test\API\JSON\v1;
|
||||||
|
|
||||||
@ -11,22 +11,25 @@ use MailPoet\Entities\NewsletterOptionFieldEntity;
|
|||||||
use MailPoet\Entities\ScheduledTaskEntity;
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
use MailPoet\Entities\SendingQueueEntity;
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
use MailPoet\Newsletter\NewsletterValidator;
|
use MailPoet\Newsletter\NewsletterValidator;
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository;
|
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
|
||||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\SettingsRepository;
|
use MailPoet\Settings\SettingsRepository;
|
||||||
use MailPoet\Tasks\Sending;
|
use MailPoet\Tasks\Sending;
|
||||||
use MailPoet\Test\DataFactories\Newsletter;
|
use MailPoet\Test\DataFactories\Newsletter;
|
||||||
|
use MailPoet\Test\DataFactories\NewsletterOption;
|
||||||
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
|
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
|
||||||
|
|
||||||
class SendingQueueTest extends \MailPoetTest {
|
class SendingQueueTest extends \MailPoetTest {
|
||||||
/** @var NewsletterEntity */
|
/** @var NewsletterEntity */
|
||||||
private $newsletter;
|
private $newsletter;
|
||||||
|
|
||||||
|
/** @var NewsletterOption */
|
||||||
|
private $newsletterOptionsFactory;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
$this->clean();
|
$this->clean();
|
||||||
|
$this->newsletterOptionsFactory = new NewsletterOption();
|
||||||
|
|
||||||
$this->newsletter = (new Newsletter())
|
$this->newsletter = (new Newsletter())
|
||||||
->withSubject('My Standard Newsletter')
|
->withSubject('My Standard Newsletter')
|
||||||
@ -44,15 +47,11 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->newsletter;
|
$newsletter = $this->newsletter;
|
||||||
$newsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);
|
$newsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
$newletterOptions = [
|
$newsletterOptions = [
|
||||||
'isScheduled' => 1,
|
'isScheduled' => 1,
|
||||||
'scheduledAt' => '2018-10-10 10:00:00',
|
'scheduledAt' => '2018-10-10 10:00:00',
|
||||||
];
|
];
|
||||||
$this->_createOrUpdateNewsletterOptions(
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, $newsletterOptions);
|
||||||
$newsletter,
|
|
||||||
NewsletterEntity::TYPE_STANDARD,
|
|
||||||
$newletterOptions
|
|
||||||
);
|
|
||||||
|
|
||||||
$sendingQueue = $this->diContainer->get(SendingQueueAPI::class);
|
$sendingQueue = $this->diContainer->get(SendingQueueAPI::class);
|
||||||
$result = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]);
|
$result = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]);
|
||||||
@ -62,7 +61,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
expect($scheduledTask->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED);
|
expect($scheduledTask->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED);
|
||||||
$scheduled = $scheduledTask->getScheduledAt();
|
$scheduled = $scheduledTask->getScheduledAt();
|
||||||
$this->assertInstanceOf(\DateTimeInterface::class, $scheduled);
|
$this->assertInstanceOf(\DateTimeInterface::class, $scheduled);
|
||||||
expect($scheduled->format('Y-m-d H:i:s'))->equals($newletterOptions['scheduledAt']);
|
expect($scheduled->format('Y-m-d H:i:s'))->equals($newsletterOptions['scheduledAt']);
|
||||||
expect($scheduledTask->getType())->equals(Sending::TASK_TYPE);
|
expect($scheduledTask->getType())->equals(Sending::TASK_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,15 +81,11 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->newsletter;
|
$newsletter = $this->newsletter;
|
||||||
$newsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);
|
$newsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
$newletterOptions = [
|
$newsletterOptions = [
|
||||||
'isScheduled' => 1,
|
'isScheduled' => 1,
|
||||||
'scheduledAt' => '2018-10-10 10:00:00',
|
'scheduledAt' => '2018-10-10 10:00:00',
|
||||||
];
|
];
|
||||||
$this->_createOrUpdateNewsletterOptions(
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, $newsletterOptions);
|
||||||
$newsletter,
|
|
||||||
NewsletterEntity::TYPE_STANDARD,
|
|
||||||
$newletterOptions
|
|
||||||
);
|
|
||||||
$sendingQueue = $this->diContainer->get(SendingQueueAPI::class);
|
$sendingQueue = $this->diContainer->get(SendingQueueAPI::class);
|
||||||
|
|
||||||
// add scheduled task
|
// add scheduled task
|
||||||
@ -103,14 +98,10 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
expect($scheduled->format('Y-m-d H:i:s'))->equals('2018-10-10 10:00:00');
|
expect($scheduled->format('Y-m-d H:i:s'))->equals('2018-10-10 10:00:00');
|
||||||
|
|
||||||
// update scheduled time
|
// update scheduled time
|
||||||
$newletterOptions = [
|
$newsletterOptions = [
|
||||||
'scheduledAt' => '2018-11-11 11:00:00',
|
'scheduledAt' => '2018-11-11 11:00:00',
|
||||||
];
|
];
|
||||||
$this->_createOrUpdateNewsletterOptions(
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, $newsletterOptions);
|
||||||
$newsletter,
|
|
||||||
NewsletterEntity::TYPE_STANDARD,
|
|
||||||
$newletterOptions
|
|
||||||
);
|
|
||||||
$result = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]);
|
$result = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]);
|
||||||
$repo = $this->diContainer->get(ScheduledTasksRepository::class);
|
$repo = $this->diContainer->get(ScheduledTasksRepository::class);
|
||||||
$this->entityManager->clear();
|
$this->entityManager->clear();
|
||||||
@ -135,30 +126,6 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
expect($response['errors'][0]['error'])->stringContainsString('bad_request');
|
expect($response['errors'][0]['error'])->stringContainsString('bad_request');
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _createOrUpdateNewsletterOptions(NewsletterEntity $newsletter, $newsletterType, $options) {
|
|
||||||
$newsletterOptionFieldRepository = $this->diContainer->get(NewsletterOptionFieldsRepository::class);
|
|
||||||
$newsletterOptionRepository = $this->diContainer->get(NewsletterOptionsRepository::class);
|
|
||||||
|
|
||||||
foreach ($options as $option => $value) {
|
|
||||||
$newsletterOptionField = $newsletterOptionFieldRepository->findOneBy(['name' => $option]);
|
|
||||||
if (!$newsletterOptionField instanceof NewsletterOptionFieldEntity) {
|
|
||||||
$newsletterOptionField = new NewsletterOptionFieldEntity();
|
|
||||||
$newsletterOptionField->setName($option);
|
|
||||||
$newsletterOptionField->setNewsletterType($newsletterType);
|
|
||||||
$this->entityManager->persist($newsletterOptionField);
|
|
||||||
}
|
|
||||||
|
|
||||||
$newsletterOption = $newsletterOptionRepository->findOneBy(['newsletter' => $newsletter, 'optionField' => $newsletterOptionField]);
|
|
||||||
if (!$newsletterOption instanceof NewsletterOptionEntity) {
|
|
||||||
$newsletterOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField);
|
|
||||||
$newsletter->getOptions()->add($newsletterOption);
|
|
||||||
$this->entityManager->persist($newsletterOption);
|
|
||||||
}
|
|
||||||
$newsletterOption->setValue($value);
|
|
||||||
}
|
|
||||||
$this->entityManager->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function clean() {
|
public function clean() {
|
||||||
$this->diContainer->get(SettingsRepository::class)->truncate();
|
$this->diContainer->get(SettingsRepository::class)->truncate();
|
||||||
$this->truncateEntity(NewsletterEntity::class);
|
$this->truncateEntity(NewsletterEntity::class);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace MailPoet\AutomaticEmails\WooCommerce\Events;
|
namespace MailPoet\AutomaticEmails\WooCommerce\Events;
|
||||||
|
|
||||||
@ -11,13 +11,11 @@ use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
|||||||
use MailPoet\Entities\SendingQueueEntity;
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository;
|
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
|
||||||
use MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler;
|
use MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler;
|
||||||
|
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||||
use MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository;
|
use MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository;
|
||||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
use MailPoet\Newsletter\Scheduler\Scheduler;
|
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\TrackingConfig;
|
use MailPoet\Settings\TrackingConfig;
|
||||||
use MailPoet\Statistics\Track\SubscriberActivityTracker;
|
use MailPoet\Statistics\Track\SubscriberActivityTracker;
|
||||||
@ -25,6 +23,7 @@ use MailPoet\Statistics\Track\SubscriberCookie;
|
|||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
use MailPoet\Test\DataFactories\Newsletter as NewsletterFactory;
|
use MailPoet\Test\DataFactories\Newsletter as NewsletterFactory;
|
||||||
|
use MailPoet\Test\DataFactories\NewsletterOption as NewsletterOptionFactory;
|
||||||
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
|
use MailPoet\Test\DataFactories\Subscriber as SubscriberFactory;
|
||||||
use MailPoet\Util\Cookies;
|
use MailPoet\Util\Cookies;
|
||||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||||
@ -56,12 +55,6 @@ class AbandonedCartTest extends \MailPoetTest {
|
|||||||
/** @var SubscriberActivityTracker&MockObject */
|
/** @var SubscriberActivityTracker&MockObject */
|
||||||
private $subscriberActivityTrackerMock;
|
private $subscriberActivityTrackerMock;
|
||||||
|
|
||||||
/** @var NewsletterOptionFieldsRepository */
|
|
||||||
private $newsletterOptionFieldsRepository;
|
|
||||||
|
|
||||||
/** @var NewsletterOptionsRepository */
|
|
||||||
private $newsletterOptionsRepository;
|
|
||||||
|
|
||||||
/** @var ScheduledTasksRepository */
|
/** @var ScheduledTasksRepository */
|
||||||
private $scheduledTasksRepository;
|
private $scheduledTasksRepository;
|
||||||
|
|
||||||
@ -77,8 +70,6 @@ class AbandonedCartTest extends \MailPoetTest {
|
|||||||
public function _before() {
|
public function _before() {
|
||||||
$this->cleanup();
|
$this->cleanup();
|
||||||
|
|
||||||
$this->newsletterOptionFieldsRepository = $this->diContainer->get(NewsletterOptionFieldsRepository::class);
|
|
||||||
$this->newsletterOptionsRepository = $this->diContainer->get(NewsletterOptionsRepository::class);
|
|
||||||
$this->scheduledTasksRepository = $this->diContainer->get(ScheduledTasksRepository::class);
|
$this->scheduledTasksRepository = $this->diContainer->get(ScheduledTasksRepository::class);
|
||||||
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
$this->scheduledTaskSubscribersRepository = $this->diContainer->get(ScheduledTaskSubscribersRepository::class);
|
$this->scheduledTaskSubscribersRepository = $this->diContainer->get(ScheduledTaskSubscribersRepository::class);
|
||||||
@ -320,7 +311,7 @@ class AbandonedCartTest extends \MailPoetTest {
|
|||||||
->withActiveStatus()
|
->withActiveStatus()
|
||||||
->create();
|
->create();
|
||||||
|
|
||||||
$this->createNewsletterOptions($newsletter, [
|
(new NewsletterOptionFactory())->createMultipleOptions($newsletter, [
|
||||||
'group' => WooCommerceEmail::SLUG,
|
'group' => WooCommerceEmail::SLUG,
|
||||||
'event' => AbandonedCart::SLUG,
|
'event' => AbandonedCart::SLUG,
|
||||||
'afterTimeType' => 'hours',
|
'afterTimeType' => 'hours',
|
||||||
@ -353,36 +344,6 @@ class AbandonedCartTest extends \MailPoetTest {
|
|||||||
return $scheduledTask;
|
return $scheduledTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createNewsletterOptions(NewsletterEntity $newsletter, array $options): void {
|
|
||||||
foreach ($options as $option => $value) {
|
|
||||||
$newsletterOptionField = $this->newsletterOptionFieldsRepository->findOneBy([
|
|
||||||
'name' => $option,
|
|
||||||
'newsletterType' => $newsletter->getType(),
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$newsletterOptionField) {
|
|
||||||
$newsletterOptionField = new NewsletterOptionFieldEntity();
|
|
||||||
$newsletterOptionField->setNewsletterType($newsletter->getType());
|
|
||||||
$newsletterOptionField->setName($option);
|
|
||||||
$this->newsletterOptionFieldsRepository->persist($newsletterOptionField);
|
|
||||||
$this->newsletterOptionFieldsRepository->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
$newsletterOption = $this->newsletterOptionsRepository->findOneBy([
|
|
||||||
'newsletter' => $newsletter,
|
|
||||||
'optionField' => $newsletterOptionField,
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!$newsletterOption) {
|
|
||||||
$newsletterOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField);
|
|
||||||
$newsletterOption->setValue($value);
|
|
||||||
$newsletter->getOptions()->add($newsletterOption);
|
|
||||||
$this->newsletterOptionsRepository->persist($newsletterOption);
|
|
||||||
$this->newsletterOptionsRepository->flush();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function createSubscriber(): SubscriberEntity {
|
private function createSubscriber(): SubscriberEntity {
|
||||||
return (new SubscriberFactory())
|
return (new SubscriberFactory())
|
||||||
->withWpUserId(123)
|
->withWpUserId(123)
|
||||||
|
@ -10,6 +10,7 @@ use MailPoet\Entities\NewsletterOptionFieldEntity;
|
|||||||
use MailPoet\Entities\NewsletterPostEntity;
|
use MailPoet\Entities\NewsletterPostEntity;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler;
|
use MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler;
|
||||||
|
use MailPoet\Test\DataFactories\NewsletterOption;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
class AbandonedCartContentTest extends \MailPoetTest {
|
class AbandonedCartContentTest extends \MailPoetTest {
|
||||||
@ -172,26 +173,10 @@ class AbandonedCartContentTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function setGroupAndEventOptions($newsletter, $group = WooCommerceEmail::SLUG, $event = AbandonedCart::SLUG) {
|
private function setGroupAndEventOptions($newsletter, $group = WooCommerceEmail::SLUG, $event = AbandonedCart::SLUG) {
|
||||||
$newsletterOptionField = new NewsletterOptionFieldEntity();
|
(new NewsletterOption())->createMultipleOptions($newsletter, [
|
||||||
$newsletterOptionField->setName('group');
|
NewsletterOptionFieldEntity::NAME_GROUP => $group,
|
||||||
$newsletterOptionField->setNewsletterType(NewsletterEntity::TYPE_AUTOMATIC);
|
NewsletterOptionFieldEntity::NAME_EVENT => $event,
|
||||||
$this->entityManager->persist($newsletterOptionField);
|
]);
|
||||||
|
|
||||||
$newsletterOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField);
|
|
||||||
$newsletterOption->setValue($group);
|
|
||||||
$this->entityManager->persist($newsletterOption);
|
|
||||||
|
|
||||||
$newsletterOptionField = new NewsletterOptionFieldEntity();
|
|
||||||
$newsletterOptionField->setName('event');
|
|
||||||
$newsletterOptionField->setNewsletterType(NewsletterEntity::TYPE_AUTOMATIC);
|
|
||||||
$this->entityManager->persist($newsletterOptionField);
|
|
||||||
|
|
||||||
$newsletterOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField);
|
|
||||||
$newsletterOption->setValue($event);
|
|
||||||
$this->entityManager->persist($newsletterOption);
|
|
||||||
|
|
||||||
$this->entityManager->flush();
|
|
||||||
$this->entityManager->refresh($newsletter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createSendingTask($newsletter, $subscriberId = null, $meta = null) {
|
private function createSendingTask($newsletter, $subscriberId = null, $meta = null) {
|
||||||
|
@ -15,9 +15,9 @@ use MailPoet\Models\Newsletter;
|
|||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
use MailPoet\Newsletter\NewsletterPostsRepository;
|
use MailPoet\Newsletter\NewsletterPostsRepository;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository;
|
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
|
use MailPoet\Test\DataFactories\NewsletterOption as NewsletterOptionsFactory;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoet\WP\Posts as WPPosts;
|
use MailPoet\WP\Posts as WPPosts;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
@ -36,29 +36,29 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
/** @var NewsletterOptionsRepository */
|
/** @var NewsletterOptionsRepository */
|
||||||
private $newsletterOptionsRepository;
|
private $newsletterOptionsRepository;
|
||||||
|
|
||||||
/** @var NewsletterOptionFieldsRepository */
|
|
||||||
private $newsletterOptionFieldsRepository;
|
|
||||||
|
|
||||||
/** @var Hooks */
|
/** @var Hooks */
|
||||||
private $hooks;
|
private $hooks;
|
||||||
|
|
||||||
/** @var Scheduler */
|
/** @var Scheduler */
|
||||||
private $scheduler;
|
private $scheduler;
|
||||||
|
|
||||||
|
/** @var NewsletterOptionsFactory */
|
||||||
|
private $newsletterOptionsFactory;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
$this->postNotificationScheduler = $this->diContainer->get(PostNotificationScheduler::class);
|
$this->postNotificationScheduler = $this->diContainer->get(PostNotificationScheduler::class);
|
||||||
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
$this->newslettersRepository = $this->diContainer->get(NewslettersRepository::class);
|
||||||
$this->newsletterPostsRepository = $this->diContainer->get(NewsletterPostsRepository::class);
|
$this->newsletterPostsRepository = $this->diContainer->get(NewsletterPostsRepository::class);
|
||||||
$this->newsletterOptionsRepository = $this->diContainer->get(NewsletterOptionsRepository::class);
|
$this->newsletterOptionsRepository = $this->diContainer->get(NewsletterOptionsRepository::class);
|
||||||
$this->newsletterOptionFieldsRepository = $this->diContainer->get(NewsletterOptionFieldsRepository::class);
|
$this->newsletterOptionsFactory = new NewsletterOptionsFactory();
|
||||||
$this->hooks = $this->diContainer->get(Hooks::class);
|
$this->hooks = $this->diContainer->get(Hooks::class);
|
||||||
$this->scheduler = $this->diContainer->get(Scheduler::class);
|
$this->scheduler = $this->diContainer->get(Scheduler::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItCreatesPostNotificationSendingTask() {
|
public function testItCreatesPostNotificationSendingTask() {
|
||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* 5 * * *',
|
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* 5 * * *',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItCreatesPostNotificationSendingTaskIfAPausedNotificationExists() {
|
public function testItCreatesPostNotificationSendingTaskIfAPausedNotificationExists() {
|
||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* 5 * * *',
|
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* 5 * * *',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItSchedulesPostNotification() {
|
public function testItSchedulesPostNotification() {
|
||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_SCHEDULE => '0 5 * * *',
|
NewsletterOptionFieldEntity::NAME_SCHEDULE => '0 5 * * *',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -146,7 +146,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItProcessesPostNotificationScheduledForDailyDelivery() {
|
public function testItProcessesPostNotificationScheduledForDailyDelivery() {
|
||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_DAILY,
|
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_DAILY,
|
||||||
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
||||||
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
||||||
@ -168,7 +168,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
|
|
||||||
// weekly notification is scheduled every Tuesday at 14:00
|
// weekly notification is scheduled every Tuesday at 14:00
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_WEEKLY,
|
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_WEEKLY,
|
||||||
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
||||||
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
||||||
@ -190,7 +190,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
|
|
||||||
// monthly notification is scheduled every 20th day at 14:00
|
// monthly notification is scheduled every 20th day at 14:00
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_MONTHLY,
|
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_MONTHLY,
|
||||||
NewsletterOptionFieldEntity::NAME_MONTH_DAY => 19,
|
NewsletterOptionFieldEntity::NAME_MONTH_DAY => 19,
|
||||||
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
||||||
@ -211,7 +211,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
|
|
||||||
// monthly notification is scheduled every last Saturday at 14:00
|
// monthly notification is scheduled every last Saturday at 14:00
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_NTHWEEKDAY,
|
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_NTHWEEKDAY,
|
||||||
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
||||||
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => 'L', // L = last
|
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => 'L', // L = last
|
||||||
@ -232,7 +232,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
|
|
||||||
// notification is scheduled immediately (next minute)
|
// notification is scheduled immediately (next minute)
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
||||||
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
NewsletterOptionFieldEntity::NAME_MONTH_DAY => null,
|
||||||
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
NewsletterOptionFieldEntity::NAME_NTH_WEEK_DAY => null,
|
||||||
@ -252,7 +252,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
public function testUnsearchablePostTypeDoesNotSchedulePostNotification() {
|
public function testUnsearchablePostTypeDoesNotSchedulePostNotification() {
|
||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
|
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
||||||
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* * * * *',
|
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* * * * *',
|
||||||
]);
|
]);
|
||||||
@ -283,7 +283,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
public function testSchedulerWontRunIfUnsentNotificationHistoryExists() {
|
public function testSchedulerWontRunIfUnsentNotificationHistoryExists() {
|
||||||
$newsletter = $this->createNewsletter();
|
$newsletter = $this->createNewsletter();
|
||||||
|
|
||||||
$this->createNewsletterOptions($newsletter, [
|
$this->newsletterOptionsFactory->createMultipleOptions($newsletter, [
|
||||||
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
NewsletterOptionFieldEntity::NAME_INTERVAL_TYPE => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
||||||
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* * * * *',
|
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* * * * *',
|
||||||
]);
|
]);
|
||||||
@ -343,26 +343,6 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
return $newsletterPost;
|
return $newsletterPost;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createNewsletterOptions(NewsletterEntity $newsletter, array $options) {
|
|
||||||
foreach ($options as $name => $value) {
|
|
||||||
$newsletterOptionField = $this->newsletterOptionFieldsRepository->findOneBy([
|
|
||||||
'name' => $name,
|
|
||||||
]);
|
|
||||||
if ($newsletterOptionField === null) {
|
|
||||||
$newsletterOptionField = new NewsletterOptionFieldEntity();
|
|
||||||
$newsletterOptionField->setName($name);
|
|
||||||
$newsletterOptionField->setNewsletterType(NewsletterEntity::TYPE_NOTIFICATION);
|
|
||||||
$this->newsletterOptionFieldsRepository->persist($newsletterOptionField);
|
|
||||||
}
|
|
||||||
|
|
||||||
$scheduleOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField);
|
|
||||||
$scheduleOption->setValue($value);
|
|
||||||
$newsletter->getOptions()->add($scheduleOption);
|
|
||||||
$this->newsletterOptionsRepository->persist($scheduleOption);
|
|
||||||
}
|
|
||||||
$this->newsletterOptionsRepository->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
Carbon::setTestNow();
|
Carbon::setTestNow();
|
||||||
$this->truncateEntity(NewsletterEntity::class);
|
$this->truncateEntity(NewsletterEntity::class);
|
||||||
|
@ -15,6 +15,7 @@ use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
|||||||
use MailPoet\Segments\SegmentsRepository;
|
use MailPoet\Segments\SegmentsRepository;
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
|
use MailPoet\Test\DataFactories\NewsletterOption;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
|
|
||||||
@ -91,6 +92,7 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
||||||
$this->entityManager->refresh($newsletter);
|
$this->entityManager->refresh($newsletter);
|
||||||
$queue = $newsletter->getLatestQueue();
|
$queue = $newsletter->getLatestQueue();
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
expect($queue->getId())->greaterOrEquals(1);
|
expect($queue->getId())->greaterOrEquals(1);
|
||||||
$task = $queue->getTask();
|
$task = $queue->getTask();
|
||||||
assert($task instanceof ScheduledTaskEntity);
|
assert($task instanceof ScheduledTaskEntity);
|
||||||
@ -115,6 +117,7 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
||||||
$this->entityManager->refresh($newsletter);
|
$this->entityManager->refresh($newsletter);
|
||||||
$queue = $newsletter->getLatestQueue();
|
$queue = $newsletter->getLatestQueue();
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
expect($queue->getId())->greaterOrEquals(1);
|
expect($queue->getId())->greaterOrEquals(1);
|
||||||
$task = $queue->getTask();
|
$task = $queue->getTask();
|
||||||
assert($task instanceof ScheduledTaskEntity);
|
assert($task instanceof ScheduledTaskEntity);
|
||||||
@ -139,6 +142,7 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
||||||
$this->entityManager->refresh($newsletter);
|
$this->entityManager->refresh($newsletter);
|
||||||
$queue = $newsletter->getLatestQueue();
|
$queue = $newsletter->getLatestQueue();
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
expect($queue->getId())->greaterOrEquals(1);
|
expect($queue->getId())->greaterOrEquals(1);
|
||||||
$task = $queue->getTask();
|
$task = $queue->getTask();
|
||||||
assert($task instanceof ScheduledTaskEntity);
|
assert($task instanceof ScheduledTaskEntity);
|
||||||
@ -164,6 +168,7 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
$welcomeScheduler->createWelcomeNotificationSendingTask($newsletter, $this->subscriber->getId());
|
||||||
$this->entityManager->refresh($newsletter);
|
$this->entityManager->refresh($newsletter);
|
||||||
$queue = $newsletter->getLatestQueue();
|
$queue = $newsletter->getLatestQueue();
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
expect($queue->getId())->greaterOrEquals(1);
|
expect($queue->getId())->greaterOrEquals(1);
|
||||||
$task = $queue->getTask();
|
$task = $queue->getTask();
|
||||||
assert($task instanceof ScheduledTaskEntity);
|
assert($task instanceof ScheduledTaskEntity);
|
||||||
@ -213,6 +218,7 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
||||||
$this->entityManager->refresh($newsletter);
|
$this->entityManager->refresh($newsletter);
|
||||||
$queue = $newsletter->getLatestQueue();
|
$queue = $newsletter->getLatestQueue();
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
$task = $queue->getTask();
|
$task = $queue->getTask();
|
||||||
assert($task instanceof ScheduledTaskEntity);
|
assert($task instanceof ScheduledTaskEntity);
|
||||||
$scheduledAt = $task->getScheduledAt();
|
$scheduledAt = $task->getScheduledAt();
|
||||||
@ -374,14 +380,15 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
$this->welcomeScheduler->scheduleWPUserWelcomeNotification(
|
$this->welcomeScheduler->scheduleWPUserWelcomeNotification(
|
||||||
$subscriberId = $this->subscriber->getId(),
|
$this->subscriber->getId(),
|
||||||
$wpUser = ['roles' => ['administrator']]
|
['roles' => ['administrator']]
|
||||||
);
|
);
|
||||||
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
||||||
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
||||||
// queue is created and scheduled for delivery one day later
|
// queue is created and scheduled for delivery one day later
|
||||||
$this->entityManager->refresh($newsletter);
|
$this->entityManager->refresh($newsletter);
|
||||||
$queue = $newsletter->getLatestQueue();
|
$queue = $newsletter->getLatestQueue();
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
$task = $queue->getTask();
|
$task = $queue->getTask();
|
||||||
assert($task instanceof ScheduledTaskEntity);
|
assert($task instanceof ScheduledTaskEntity);
|
||||||
$scheduledAt = $task->getScheduledAt();
|
$scheduledAt = $task->getScheduledAt();
|
||||||
@ -402,13 +409,14 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
);
|
);
|
||||||
$this->welcomeScheduler->scheduleWPUserWelcomeNotification(
|
$this->welcomeScheduler->scheduleWPUserWelcomeNotification(
|
||||||
$this->subscriber->getId(),
|
$this->subscriber->getId(),
|
||||||
$wpUser = ['roles' => ['administrator']]
|
['roles' => ['administrator']]
|
||||||
);
|
);
|
||||||
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
$currentTime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'));
|
||||||
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
Carbon::setTestNow($currentTime); // mock carbon to return current time
|
||||||
// queue is created and scheduled for delivery one day later
|
// queue is created and scheduled for delivery one day later
|
||||||
$this->entityManager->refresh($newsletter);
|
$this->entityManager->refresh($newsletter);
|
||||||
$queue = $newsletter->getLatestQueue();
|
$queue = $newsletter->getLatestQueue();
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
$task = $queue->getTask();
|
$task = $queue->getTask();
|
||||||
assert($task instanceof ScheduledTaskEntity);
|
assert($task instanceof ScheduledTaskEntity);
|
||||||
$scheduledAt = $task->getScheduledAt();
|
$scheduledAt = $task->getScheduledAt();
|
||||||
@ -427,24 +435,9 @@ class WelcomeTest extends \MailPoetTest {
|
|||||||
return $newsletter;
|
return $newsletter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function configureNewsletterWithOptions(NewsletterEntity $newsletter, array $options) {
|
private function configureNewsletterWithOptions(NewsletterEntity $newsletter, array $options): NewsletterEntity {
|
||||||
foreach ($options as $optionFieldName => $optionValue) {
|
$newsletterOptionsFactory = new NewsletterOption();
|
||||||
$optionField = $this->entityManager->getRepository(NewsletterOptionFieldEntity::class)->findOneBy([
|
$newsletterOptionsFactory->createMultipleOptions($newsletter, $options);
|
||||||
'name' => $optionFieldName,
|
|
||||||
'newsletterType' => NewsletterEntity::TYPE_WELCOME,
|
|
||||||
]);
|
|
||||||
if (!$optionField instanceof NewsletterOptionFieldEntity) {
|
|
||||||
$optionField = new NewsletterOptionFieldEntity();
|
|
||||||
$optionField->setNewsletterType(NewsletterEntity::TYPE_WELCOME);
|
|
||||||
$optionField->setName($optionFieldName);
|
|
||||||
$this->entityManager->persist($optionField);
|
|
||||||
}
|
|
||||||
$option = new NewsletterOptionEntity($newsletter, $optionField);
|
|
||||||
$option->setValue($optionValue);
|
|
||||||
$this->entityManager->persist($option);
|
|
||||||
$newsletter->getOptions()->add($option);
|
|
||||||
}
|
|
||||||
$this->entityManager->flush();
|
|
||||||
return $newsletter;
|
return $newsletter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
|||||||
use MailPoet\Segments\SegmentsRepository;
|
use MailPoet\Segments\SegmentsRepository;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\SettingsRepository;
|
use MailPoet\Settings\SettingsRepository;
|
||||||
|
use MailPoet\Test\DataFactories\NewsletterOption;
|
||||||
|
|
||||||
class SubscriberActionsTest extends \MailPoetTest {
|
class SubscriberActionsTest extends \MailPoetTest {
|
||||||
|
|
||||||
@ -82,10 +83,7 @@ class SubscriberActionsTest extends \MailPoetTest {
|
|||||||
NewsletterOptionFieldEntity::NAME_AFTER_TIME_TYPE => 'days',
|
NewsletterOptionFieldEntity::NAME_AFTER_TIME_TYPE => 'days',
|
||||||
NewsletterOptionFieldEntity::NAME_AFTER_TIME_NUMBER => 1,
|
NewsletterOptionFieldEntity::NAME_AFTER_TIME_NUMBER => 1,
|
||||||
];
|
];
|
||||||
foreach ($newsletterOptions as $option => $value) {
|
(new NewsletterOption())->createMultipleOptions($newsletter, $newsletterOptions);
|
||||||
$newsletterOptionField = $this->createNewsletterOptionField($option, $newsletter->getType());
|
|
||||||
$newsletterOption = $this->createNewsletterOption($newsletter, $newsletterOptionField, (string)$value);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->settings->set('signup_confirmation.enabled', false);
|
$this->settings->set('signup_confirmation.enabled', false);
|
||||||
$subscriber = $this->subscriberActions->subscribe($this->testData, [$segment->getId()]);
|
$subscriber = $this->subscriberActions->subscribe($this->testData, [$segment->getId()]);
|
||||||
@ -112,10 +110,7 @@ class SubscriberActionsTest extends \MailPoetTest {
|
|||||||
'afterTimeType' => 'days',
|
'afterTimeType' => 'days',
|
||||||
'afterTimeNumber' => 1,
|
'afterTimeNumber' => 1,
|
||||||
];
|
];
|
||||||
foreach ($newsletterOptions as $option => $value) {
|
(new NewsletterOption())->createMultipleOptions($newsletter, $newsletterOptions);
|
||||||
$newsletterOptionField = $this->createNewsletterOptionField($option, $newsletter->getType());
|
|
||||||
$newsletterOption = $this->createNewsletterOption($newsletter, $newsletterOptionField, (string)$value);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->settings->set('signup_confirmation.enabled', true);
|
$this->settings->set('signup_confirmation.enabled', true);
|
||||||
$subscriber = $this->subscriberActions->subscribe($this->testData, [$segment->getId()]);
|
$subscriber = $this->subscriberActions->subscribe($this->testData, [$segment->getId()]);
|
||||||
@ -272,28 +267,6 @@ class SubscriberActionsTest extends \MailPoetTest {
|
|||||||
return $newsletter;
|
return $newsletter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createNewsletterOptionField(string $option, string $type): NewsletterOptionFieldEntity {
|
|
||||||
$newsletterOptionField = new NewsletterOptionFieldEntity();
|
|
||||||
$newsletterOptionField->setName($option);
|
|
||||||
$newsletterOptionField->setNewsletterType($type);
|
|
||||||
$this->entityManager->persist($newsletterOptionField);
|
|
||||||
$this->entityManager->flush();
|
|
||||||
return $newsletterOptionField;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function createNewsletterOption(
|
|
||||||
NewsletterEntity $newsletter,
|
|
||||||
NewsletterOptionFieldEntity $optionField,
|
|
||||||
string $value
|
|
||||||
): NewsletterOptionEntity {
|
|
||||||
$newsletterOption = new NewsletterOptionEntity($newsletter, $optionField);
|
|
||||||
$newsletterOption->setValue($value);
|
|
||||||
$newsletter->getOptions()->add($newsletterOption);
|
|
||||||
$this->entityManager->persist($newsletterOption);
|
|
||||||
$this->entityManager->flush();
|
|
||||||
return $newsletterOption;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
$this->truncateEntity(SubscriberEntity::class);
|
$this->truncateEntity(SubscriberEntity::class);
|
||||||
$this->truncateEntity(SegmentEntity::class);
|
$this->truncateEntity(SegmentEntity::class);
|
||||||
|
@ -32,6 +32,7 @@ use MailPoet\Subscription\CaptchaRenderer;
|
|||||||
use MailPoet\Subscription\ManageSubscriptionFormRenderer;
|
use MailPoet\Subscription\ManageSubscriptionFormRenderer;
|
||||||
use MailPoet\Subscription\Pages;
|
use MailPoet\Subscription\Pages;
|
||||||
use MailPoet\Subscription\SubscriptionUrlFactory;
|
use MailPoet\Subscription\SubscriptionUrlFactory;
|
||||||
|
use MailPoet\Test\DataFactories\NewsletterOption as NewsletterOptionFactory;
|
||||||
use MailPoet\Test\DataFactories\Segment as SegmentFactory;
|
use MailPoet\Test\DataFactories\Segment as SegmentFactory;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
@ -144,17 +145,7 @@ class PagesTest extends \MailPoetTest {
|
|||||||
'afterTimeType' => 'days',
|
'afterTimeType' => 'days',
|
||||||
'afterTimeNumber' => 1,
|
'afterTimeNumber' => 1,
|
||||||
];
|
];
|
||||||
foreach ($newsletterOptions as $option => $value) {
|
(new NewsletterOptionFactory())->createMultipleOptions($newsletter, $newsletterOptions);
|
||||||
$newsletterOptionField = new NewsletterOptionFieldEntity();
|
|
||||||
$newsletterOptionField->setName($option);
|
|
||||||
$newsletterOptionField->setNewsletterType($newsletter->getType());
|
|
||||||
$this->entityManager->persist($newsletterOptionField);
|
|
||||||
|
|
||||||
$newsletterOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField);
|
|
||||||
$newsletterOption->setValue((string)$value);
|
|
||||||
$newsletter->getOptions()->add($newsletterOption);
|
|
||||||
$this->entityManager->persist($newsletterOption);
|
|
||||||
}
|
|
||||||
|
|
||||||
// confirm subscription and ensure that welcome email is scheduled
|
// confirm subscription and ensure that welcome email is scheduled
|
||||||
$subscription->confirm();
|
$subscription->confirm();
|
||||||
|
Reference in New Issue
Block a user