Refactor to doctrine

[MAILPOET-3876]
This commit is contained in:
Pavel Dohnal
2021-11-08 13:09:10 +01:00
committed by Veljko V
parent ee00f03ed3
commit 9229ed77d8
2 changed files with 18 additions and 8 deletions

View File

@ -120,14 +120,13 @@ class SendingQueue extends APIEndpoint {
} }
WordPress::resetRunInterval(); WordPress::resetRunInterval();
if ((bool)$newsletterEntity->getOptionValue('isScheduled')) {
if ((bool)$newsletter->isScheduled) {
// set newsletter status // set newsletter status
$newsletter->setStatus(Newsletter::STATUS_SCHEDULED); $newsletterEntity->setStatus(NewsletterEntity::STATUS_SCHEDULED);
// set queue status // set queue status
$queue->status = SendingQueueModel::STATUS_SCHEDULED; $queue->status = SendingQueueModel::STATUS_SCHEDULED;
$queue->scheduledAt = Scheduler::formatDatetimeString($newsletter->scheduledAt); $queue->scheduledAt = Scheduler::formatDatetimeString($newsletterEntity->getOptionValue('scheduledAt'));
} else { } else {
$segments = $newsletter->segments()->findMany(); $segments = $newsletter->segments()->findMany();
$subscribersCount = $this->subscribersFinder->addSubscribersToTaskFromSegments($queue->task(), $segments); $subscribersCount = $this->subscribersFinder->addSubscribersToTaskFromSegments($queue->task(), $segments);
@ -141,9 +140,10 @@ class SendingQueue extends APIEndpoint {
$queue->scheduledAt = null; $queue->scheduledAt = null;
// set newsletter status // set newsletter status
$newsletter->setStatus(Newsletter::STATUS_SENDING); $newsletterEntity->setStatus(Newsletter::STATUS_SENDING);
} }
$queue->save(); $queue->save();
$this->newsletterRepository->flush();
$errors = $queue->getErrors(); $errors = $queue->getErrors();
if (!empty($errors)) { if (!empty($errors)) {

View File

@ -15,6 +15,7 @@ use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository; use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository;
use MailPoet\Newsletter\Options\NewsletterOptionsRepository; use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository; use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Segments\SubscribersFinder; use MailPoet\Segments\SubscribersFinder;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
@ -64,7 +65,9 @@ class SendingQueueTest extends \MailPoetTest {
$scheduledTask = $repo->findOneById($result->data['task_id']); $scheduledTask = $repo->findOneById($result->data['task_id']);
assert($scheduledTask instanceof ScheduledTaskEntity); assert($scheduledTask instanceof ScheduledTaskEntity);
expect($scheduledTask->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED); expect($scheduledTask->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED);
expect($scheduledTask->getScheduledAt()->format('Y-m-d H:i:s'))->equals($newletterOptions['scheduledAt']); $scheduled = $scheduledTask->getScheduledAt();
assert($scheduled instanceof \DateTimeInterface);
expect($scheduled->format('Y-m-d H:i:s'))->equals($newletterOptions['scheduledAt']);
expect($scheduledTask->getType())->equals(Sending::TASK_TYPE); expect($scheduledTask->getType())->equals(Sending::TASK_TYPE);
} }
@ -74,6 +77,7 @@ class SendingQueueTest extends \MailPoetTest {
'check' => true, 'check' => true,
]), ]),
$this->diContainer->get(NewslettersRepository::class), $this->diContainer->get(NewslettersRepository::class),
$this->diContainer->get(SendingQueuesRepository::class),
$this->diContainer->get(Bridge::class), $this->diContainer->get(Bridge::class),
$this->diContainer->get(SubscribersFinder::class) $this->diContainer->get(SubscribersFinder::class)
); );
@ -103,7 +107,9 @@ class SendingQueueTest extends \MailPoetTest {
$repo = $this->diContainer->get(ScheduledTasksRepository::class); $repo = $this->diContainer->get(ScheduledTasksRepository::class);
$scheduledTask = $repo->findOneById($result->data['task_id']); $scheduledTask = $repo->findOneById($result->data['task_id']);
assert($scheduledTask instanceof ScheduledTaskEntity); assert($scheduledTask instanceof ScheduledTaskEntity);
expect($scheduledTask->getScheduledAt()->format('Y-m-d H:i:s'))->equals('2018-10-10 10:00:00'); $scheduled = $scheduledTask->getScheduledAt();
assert($scheduled instanceof \DateTimeInterface);
expect($scheduled->format('Y-m-d H:i:s'))->equals('2018-10-10 10:00:00');
// update scheduled time // update scheduled time
$newletterOptions = [ $newletterOptions = [
@ -122,7 +128,9 @@ class SendingQueueTest extends \MailPoetTest {
// new task was not created // new task was not created
expect($rescheduledTask->getId())->equals($scheduledTask->getId()); expect($rescheduledTask->getId())->equals($scheduledTask->getId());
// scheduled time was updated // scheduled time was updated
expect($rescheduledTask->getScheduledAt()->format('Y-m-d H:i:s'))->equals('2018-11-11 11:00:00'); $scheduled = $rescheduledTask->getScheduledAt();
assert($scheduled instanceof \DateTimeInterface);
expect($scheduled->format('Y-m-d H:i:s'))->equals('2018-11-11 11:00:00');
} }
public function testItRejectsNewsletterWithoutUnsubscribeLink() { public function testItRejectsNewsletterWithoutUnsubscribeLink() {
@ -135,6 +143,7 @@ class SendingQueueTest extends \MailPoetTest {
$sendingQueue = new SendingQueueAPI( $sendingQueue = new SendingQueueAPI(
$this->diContainer->get(SubscribersFeature::class), $this->diContainer->get(SubscribersFeature::class),
$this->diContainer->get(NewslettersRepository::class), $this->diContainer->get(NewslettersRepository::class),
$this->diContainer->get(SendingQueuesRepository::class),
Stub::make(Bridge::class, [ Stub::make(Bridge::class, [
'isMailpoetSendingServiceEnabled' => true, 'isMailpoetSendingServiceEnabled' => true,
]), ]),
@ -163,6 +172,7 @@ class SendingQueueTest extends \MailPoetTest {
$newsletterOption = $newsletterOptionRepository->findOneBy(['newsletter' => $newsletter, 'optionField' => $newsletterOptionField]); $newsletterOption = $newsletterOptionRepository->findOneBy(['newsletter' => $newsletter, 'optionField' => $newsletterOptionField]);
if (!$newsletterOption instanceof NewsletterOptionEntity) { if (!$newsletterOption instanceof NewsletterOptionEntity) {
$newsletterOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField); $newsletterOption = new NewsletterOptionEntity($newsletter, $newsletterOptionField);
$newsletter->getOptions()->add($newsletterOption);
$this->entityManager->persist($newsletterOption); $this->entityManager->persist($newsletterOption);
} }
$newsletterOption->setValue($value); $newsletterOption->setValue($value);