Adjust tests, remove models and Tasks\Sending
[MAILPOET-4371]
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
namespace MailPoet\Newsletter\Scheduler;
|
namespace MailPoet\Newsletter\Scheduler;
|
||||||
|
|
||||||
use MailPoet\Config\Hooks;
|
use MailPoet\Config\Hooks;
|
||||||
|
use MailPoet\Cron\Workers\SendingQueue\SendingQueue;
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
use MailPoet\Entities\NewsletterOptionEntity;
|
use MailPoet\Entities\NewsletterOptionEntity;
|
||||||
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
||||||
@@ -11,14 +12,15 @@ use MailPoet\Entities\ScheduledTaskEntity;
|
|||||||
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
||||||
use MailPoet\Entities\SendingQueueEntity;
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Models\Newsletter;
|
|
||||||
use MailPoet\Models\SendingQueue;
|
|
||||||
use MailPoet\Newsletter\NewsletterPostsRepository;
|
use MailPoet\Newsletter\NewsletterPostsRepository;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
||||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
|
||||||
use MailPoet\Test\DataFactories\NewsletterOption as NewsletterOptionsFactory;
|
use MailPoet\Test\DataFactories\NewsletterOption as NewsletterOptionsFactory;
|
||||||
|
use MailPoet\Test\DataFactories\ScheduledTask;
|
||||||
|
use MailPoet\Test\DataFactories\SendingQueue as SendingQueueFactory;
|
||||||
|
use MailPoet\Test\DataFactories\Newsletter as NewsletterFactory;
|
||||||
|
use MailPoet\WP\DateTime;
|
||||||
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;
|
||||||
@@ -87,7 +89,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->newslettersRepository->findOneById($newsletterId);
|
$newsletter = $this->newslettersRepository->findOneById($newsletterId);
|
||||||
assert($newsletter instanceof NewsletterEntity);
|
assert($newsletter instanceof NewsletterEntity);
|
||||||
$this->postNotificationScheduler->createPostNotificationSendingTask($newsletter);
|
$this->postNotificationScheduler->createPostNotificationSendingTask($newsletter);
|
||||||
expect(SendingQueue::where('newsletter_id', $newsletter->getId())->findMany())->count(1);
|
expect($this->sendingQueuesRepository->findBy(['newsletter' => $newsletter]))->count(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItCreatesPostNotificationSendingTaskIfAPausedNotificationExists() {
|
public function testItCreatesPostNotificationSendingTaskIfAPausedNotificationExists() {
|
||||||
@@ -124,7 +126,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$newsletter = $this->newslettersRepository->findOneById($newsletterId);
|
$newsletter = $this->newslettersRepository->findOneById($newsletterId);
|
||||||
assert($newsletter instanceof NewsletterEntity);
|
assert($newsletter instanceof NewsletterEntity);
|
||||||
$this->postNotificationScheduler->createPostNotificationSendingTask($newsletter);
|
$this->postNotificationScheduler->createPostNotificationSendingTask($newsletter);
|
||||||
expect(SendingQueue::where('newsletter_id', $newsletter->getId())->findMany())->count(2);
|
expect($this->sendingQueuesRepository->findBy(['newsletter' => $newsletter]))->count(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItDoesNotSchedulePostNotificationWhenNotificationWasAlreadySentForPost() {
|
public function testItDoesNotSchedulePostNotificationWhenNotificationWasAlreadySentForPost() {
|
||||||
@@ -134,9 +136,8 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// queue is not created when notification was already sent for the post
|
// queue is not created when notification was already sent for the post
|
||||||
$this->postNotificationScheduler->schedulePostNotification($postId);
|
$this->postNotificationScheduler->schedulePostNotification($postId);
|
||||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->getId())
|
$queue = $this->sendingQueuesRepository->findOneBy(['newsletter' => $newsletter]);
|
||||||
->findOne();
|
expect($queue)->null();
|
||||||
expect($queue)->false();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItSchedulesPostNotification() {
|
public function testItSchedulesPostNotification() {
|
||||||
@@ -152,9 +153,9 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$nextRunDate = ($currentTime->hour < 5) ?
|
$nextRunDate = ($currentTime->hour < 5) ?
|
||||||
$currentTime :
|
$currentTime :
|
||||||
$currentTime->addDay();
|
$currentTime->addDay();
|
||||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->getId())
|
$queue = $this->sendingQueuesRepository->findOneBy(['newsletter' => $newsletter]);
|
||||||
->findOne();
|
expect($queue->getTask()->getScheduledAt()->format(DateTime::DEFAULT_DATE_TIME_FORMAT))
|
||||||
expect($queue->scheduledAt)->startsWith($nextRunDate->format('Y-m-d 05:00'));
|
->equals($nextRunDate->format('Y-m-d 05:00:00'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItProcessesPostNotificationScheduledForDailyDelivery() {
|
public function testItProcessesPostNotificationScheduledForDailyDelivery() {
|
||||||
@@ -171,7 +172,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
||||||
|
|
||||||
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
||||||
assert($scheduleOption instanceof NewsletterOptionEntity);
|
$this->assertInstanceOf(NewsletterOptionEntity::class, $scheduleOption);
|
||||||
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
||||||
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
||||||
->equals('2017-01-01 14:00:00');
|
->equals('2017-01-01 14:00:00');
|
||||||
@@ -193,7 +194,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
||||||
|
|
||||||
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
||||||
assert($scheduleOption instanceof NewsletterOptionEntity);
|
$this->assertInstanceOf(NewsletterOptionEntity::class, $scheduleOption);
|
||||||
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
||||||
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
||||||
->equals('2017-01-03 14:00:00');
|
->equals('2017-01-03 14:00:00');
|
||||||
@@ -214,7 +215,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
||||||
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
||||||
assert($scheduleOption instanceof NewsletterOptionEntity);
|
$this->assertInstanceOf(NewsletterOptionEntity::class, $scheduleOption);
|
||||||
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
||||||
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
||||||
->equals('2017-01-19 14:00:00');
|
->equals('2017-01-19 14:00:00');
|
||||||
@@ -235,7 +236,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
||||||
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
||||||
assert($scheduleOption instanceof NewsletterOptionEntity);
|
$this->assertInstanceOf(NewsletterOptionEntity::class, $scheduleOption);
|
||||||
$currentTime = 1485694800; // Sunday, 29 January 2017 @ 1:00pm (UTC)
|
$currentTime = 1485694800; // Sunday, 29 January 2017 @ 1:00pm (UTC)
|
||||||
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
||||||
->equals('2017-02-25 14:00:00');
|
->equals('2017-02-25 14:00:00');
|
||||||
@@ -256,7 +257,7 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
$this->postNotificationScheduler->processPostNotificationSchedule($newsletter);
|
||||||
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
$scheduleOption = $newsletter->getOption(NewsletterOptionFieldEntity::NAME_SCHEDULE);
|
||||||
assert($scheduleOption instanceof NewsletterOptionEntity);
|
$this->assertInstanceOf(NewsletterOptionEntity::class, $scheduleOption);
|
||||||
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
$currentTime = 1483275600; // Sunday, 1 January 2017 @ 1:00pm (UTC)
|
||||||
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
expect($this->scheduler->getNextRunDate($scheduleOption->getValue(), $currentTime))
|
||||||
->equals('2017-01-01 13:01:00');
|
->equals('2017-01-01 13:01:00');
|
||||||
@@ -280,8 +281,8 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
];
|
];
|
||||||
wp_insert_post($postData);
|
wp_insert_post($postData);
|
||||||
|
|
||||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->getId())->findOne();
|
$queue = $this->sendingQueuesRepository->findOneBy(['newsletter' => $newsletter]);
|
||||||
expect($queue)->equals(false);
|
expect($queue)->null();
|
||||||
|
|
||||||
$this->_removePostNotificationHooks();
|
$this->_removePostNotificationHooks();
|
||||||
register_post_type('post', ['exclude_from_search' => false]);
|
register_post_type('post', ['exclude_from_search' => false]);
|
||||||
@@ -289,8 +290,8 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
|
|
||||||
wp_insert_post($postData);
|
wp_insert_post($postData);
|
||||||
|
|
||||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->getId())->findOne();
|
$queue = $this->sendingQueuesRepository->findOneBy(['newsletter' => $newsletter]);
|
||||||
expect($queue)->notequals(false);
|
expect($queue)->notNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSchedulerWontRunIfUnsentNotificationHistoryExists() {
|
public function testSchedulerWontRunIfUnsentNotificationHistoryExists() {
|
||||||
@@ -301,18 +302,20 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* * * * *',
|
NewsletterOptionFieldEntity::NAME_SCHEDULE => '* * * * *',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$notificationHistory = new NewsletterEntity();
|
$notificationHistory = (new NewsletterFactory())
|
||||||
$notificationHistory->setType(Newsletter::TYPE_NOTIFICATION_HISTORY);
|
->withSubject($newsletter->getSubject())
|
||||||
$notificationHistory->setStatus(Newsletter::STATUS_SENDING);
|
->withType(NewsletterEntity::TYPE_NOTIFICATION_HISTORY)
|
||||||
$notificationHistory->setParent($newsletter);
|
->withStatus(NewsletterEntity::STATUS_SENDING)
|
||||||
$notificationHistory->setSubject($newsletter->getSubject());
|
->withParent($newsletter)
|
||||||
$this->newslettersRepository->persist($notificationHistory);
|
->create();
|
||||||
$this->newslettersRepository->flush();
|
|
||||||
|
|
||||||
$sendingTask = SendingTask::create();
|
$task = (new ScheduledTask())->create(
|
||||||
$sendingTask->newsletterId = $notificationHistory->getId();
|
SendingQueue::TASK_TYPE,
|
||||||
$sendingTask->status = SendingQueue::STATUS_SCHEDULED;
|
SendingQueueEntity::STATUS_SCHEDULED, Carbon::now()
|
||||||
$sendingTask->save();
|
->addDay()
|
||||||
|
);
|
||||||
|
|
||||||
|
(new SendingQueueFactory())->create($task, $notificationHistory);
|
||||||
|
|
||||||
$postData = [
|
$postData = [
|
||||||
'post_title' => 'title',
|
'post_title' => 'title',
|
||||||
@@ -324,8 +327,8 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$this->hooks->setupPostNotifications();
|
$this->hooks->setupPostNotifications();
|
||||||
wp_insert_post($postData);
|
wp_insert_post($postData);
|
||||||
|
|
||||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->getId())->findOne();
|
$queue = $this->sendingQueuesRepository->findOneBy(['newsletter' => $newsletter]);
|
||||||
expect($queue)->equals(false);
|
expect($queue)->null();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _removePostNotificationHooks() {
|
public function _removePostNotificationHooks() {
|
||||||
@@ -336,17 +339,14 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
10
|
10
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createNewsletter(): NewsletterEntity {
|
private function createNewsletter(): NewsletterEntity {
|
||||||
$newsletter = new NewsletterEntity();
|
return (new NewsletterFactory())
|
||||||
$newsletter->setType(Newsletter::TYPE_NOTIFICATION);
|
->withType(NewsletterEntity::TYPE_NOTIFICATION)
|
||||||
$newsletter->setStatus(Newsletter::STATUS_ACTIVE);
|
->withStatus(NewsletterEntity::STATUS_ACTIVE)
|
||||||
$newsletter->setSubject('Testing subject');
|
->withSubject('Testing subject')
|
||||||
$this->newslettersRepository->persist($newsletter);
|
->create();
|
||||||
$this->newslettersRepository->flush();
|
|
||||||
return $newsletter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createPost(NewsletterEntity $newsletter, int $postId): NewsletterPostEntity {
|
private function createPost(NewsletterEntity $newsletter, int $postId): NewsletterPostEntity {
|
||||||
@@ -367,4 +367,5 @@ class PostNotificationTest extends \MailPoetTest {
|
|||||||
$this->truncateEntity(SubscriberEntity::class);
|
$this->truncateEntity(SubscriberEntity::class);
|
||||||
$this->truncateEntity(SendingQueueEntity::class);
|
$this->truncateEntity(SendingQueueEntity::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user