Fix scheduling post notifications with prefilled subscribers queue
[MAILPOET-6346]
This commit is contained in:
committed by
Aschepikov
parent
189663e22a
commit
59154a20f4
@ -193,7 +193,8 @@ class Scheduler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ensure that subscribers are in segments
|
// ensure that subscribers are in segments
|
||||||
$subscribersCount = $this->subscribersFinder->addSubscribersToTaskFromSegments($task, $segments, $newsletter->getFilterSegmentId());
|
$this->subscribersFinder->addSubscribersToTaskFromSegments($task, $segments, $newsletter->getFilterSegmentId());
|
||||||
|
$subscribersCount = $task->getSubscribers()->count();
|
||||||
if (empty($subscribersCount)) {
|
if (empty($subscribersCount)) {
|
||||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->info(
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->info(
|
||||||
'post notification no subscribers',
|
'post notification no subscribers',
|
||||||
|
@ -523,6 +523,31 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
verify($updatedNotificationHistory->getStatus())->equals(NewsletterEntity::STATUS_SENDING);
|
verify($updatedNotificationHistory->getStatus())->equals(NewsletterEntity::STATUS_SENDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItCanProcessPostNotificationNewsletterWithPrefilledScheduledTaskSubscribers() {
|
||||||
|
$newsletter = $this->_createNewsletter();
|
||||||
|
$task = $this->createTaskWithQueue($newsletter);
|
||||||
|
$segment = $this->_createSegment();
|
||||||
|
$this->_createNewsletterSegment($newsletter->getId(), $segment->getId());
|
||||||
|
$subscriber = $this->_createSubscriber();
|
||||||
|
$this->_createSubscriberSegment($subscriber->getId(), $segment->getId());
|
||||||
|
$this->assertIsInt($segment->getId());
|
||||||
|
$this->newsletterOptionFactory->create($newsletter, 'segment', $segment->getId());
|
||||||
|
$scheduler = $this->getScheduler($this->subscribersFinder);
|
||||||
|
$this->entityManager->refresh($newsletter);
|
||||||
|
|
||||||
|
// Prefill scheduled task subscriber
|
||||||
|
$scheduledTaskSubscriber = new ScheduledTaskSubscriberEntity($task, $subscriber);
|
||||||
|
$this->entityManager->persist($scheduledTaskSubscriber);
|
||||||
|
$task->getSubscribers()->add($scheduledTaskSubscriber);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
|
||||||
|
// return true
|
||||||
|
verify($scheduler->processPostNotificationNewsletter($newsletter, $task))->true();
|
||||||
|
// create notification history
|
||||||
|
$notificationHistory = $this->newslettersRepository->findOneBy(['parent' => $newsletter->getId()]);
|
||||||
|
$this->assertInstanceOf(NewsletterEntity::class, $notificationHistory);
|
||||||
|
}
|
||||||
|
|
||||||
public function testItDeletesQueueDuringProcessingWhenNewsletterNotFound() {
|
public function testItDeletesQueueDuringProcessingWhenNewsletterNotFound() {
|
||||||
$subscriber = $this->_createSubscriber();
|
$subscriber = $this->_createSubscriber();
|
||||||
$newsletter = $this->_createNewsletter(NewsletterEntity::TYPE_STANDARD);
|
$newsletter = $this->_createNewsletter(NewsletterEntity::TYPE_STANDARD);
|
||||||
|
Reference in New Issue
Block a user