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
|
||||
$subscribersCount = $this->subscribersFinder->addSubscribersToTaskFromSegments($task, $segments, $newsletter->getFilterSegmentId());
|
||||
$this->subscribersFinder->addSubscribersToTaskFromSegments($task, $segments, $newsletter->getFilterSegmentId());
|
||||
$subscribersCount = $task->getSubscribers()->count();
|
||||
if (empty($subscribersCount)) {
|
||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->info(
|
||||
'post notification no subscribers',
|
||||
|
@ -523,6 +523,31 @@ class SchedulerTest extends \MailPoetTest {
|
||||
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() {
|
||||
$subscriber = $this->_createSubscriber();
|
||||
$newsletter = $this->_createNewsletter(NewsletterEntity::TYPE_STANDARD);
|
||||
@ -601,7 +626,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$scheduler = $this->getSchedulerMock([
|
||||
'processScheduledStandardNewsletter' => Expected::never(),
|
||||
]);
|
||||
|
||||
|
||||
$scheduler->process();
|
||||
|
||||
$refetchedTask = $this->scheduledTasksRepository->findOneById($task->getId());
|
||||
|
Reference in New Issue
Block a user