diff --git a/mailpoet/lib/Newsletter/NewsletterSaveController.php b/mailpoet/lib/Newsletter/NewsletterSaveController.php index 9b31756754..9e57666a39 100644 --- a/mailpoet/lib/Newsletter/NewsletterSaveController.php +++ b/mailpoet/lib/Newsletter/NewsletterSaveController.php @@ -327,7 +327,7 @@ class NewsletterSaveController { } if ($newsletter->getStatus() === NewsletterEntity::STATUS_CORRUPT) { - $newsletter->setStatus(NewsletterEntity::STATUS_SENDING); + $newsletter->setStatus($newsletter->canBeSetActive() ? NewsletterEntity::STATUS_ACTIVE : NewsletterEntity::STATUS_SENDING); } } diff --git a/mailpoet/lib/Newsletter/Sending/SendingQueuesRepository.php b/mailpoet/lib/Newsletter/Sending/SendingQueuesRepository.php index cb23ba87d0..cd54a13c86 100644 --- a/mailpoet/lib/Newsletter/Sending/SendingQueuesRepository.php +++ b/mailpoet/lib/Newsletter/Sending/SendingQueuesRepository.php @@ -197,7 +197,7 @@ class SendingQueuesRepository extends Repository { $queue->setNewsletterRenderedBody(null); $this->persist($queue); } - $newsletter->setStatus(NewsletterEntity::STATUS_SENDING); + $newsletter->setStatus($newsletter->canBeSetActive() ? NewsletterEntity::STATUS_ACTIVE : NewsletterEntity::STATUS_SENDING); $task->setStatus(null); $this->flush(); } diff --git a/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php b/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php index 0429f90173..fe330d0579 100644 --- a/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php +++ b/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php @@ -411,6 +411,18 @@ class NewsletterSaveControllerTest extends \MailPoetTest { verify($newsletter->getReplyToAddress())->same('reply@test.com'); } + public function testItResetCorruptedState(): void { + $newsletter = $this->createNewsletter(NewsletterEntity::TYPE_STANDARD, NewsletterEntity::STATUS_CORRUPT); + $data = ['subject' => 'My First Newsletter', 'id' => $newsletter->getId()]; + $newsletter = $this->saveController->save($data); + verify($newsletter->getStatus())->equals(NewsletterEntity::STATUS_SENDING); + + $activableNewsletter = $this->createNewsletter(NewsletterEntity::TYPE_AUTOMATION, NewsletterEntity::STATUS_CORRUPT); + $data = ['subject' => 'My Automation Newsletter', 'id' => $activableNewsletter->getId()]; + $activableNewsletter = $this->saveController->save($data); + verify($activableNewsletter->getStatus())->equals(NewsletterEntity::STATUS_ACTIVE); + } + private function createNewsletter(string $type, string $status = NewsletterEntity::STATUS_DRAFT): NewsletterEntity { $newsletter = new NewsletterEntity(); $newsletter->setType($type); diff --git a/mailpoet/tests/integration/Newsletter/Sending/SendingQueuesRepositoryTest.php b/mailpoet/tests/integration/Newsletter/Sending/SendingQueuesRepositoryTest.php index c037ba0812..13a5b7fda4 100644 --- a/mailpoet/tests/integration/Newsletter/Sending/SendingQueuesRepositoryTest.php +++ b/mailpoet/tests/integration/Newsletter/Sending/SendingQueuesRepositoryTest.php @@ -91,6 +91,25 @@ class SendingQueuesRepositoryTest extends \MailPoetTest { verify($newsletter->getStatus())->equals(NewsletterEntity::STATUS_SENDING); } + public function testItResumesSendingOfActivableNewsletter() { + $task = $this->createTask(); + $task->setStatus(ScheduledTaskEntity::STATUS_PAUSED); + $queue = $this->createQueue($task); + $newsletter = $queue->getNewsletter(); + $this->assertInstanceOf(NewsletterEntity::class, $newsletter); + $newsletter->setType(NewsletterEntity::TYPE_AUTOMATION); + $newsletter->setStatus(NewsletterEntity::STATUS_ACTIVE); + $queue->setCountTotal(1); + $queue->setCountProcessed(2); + $this->entityManager->flush(); + + $this->repository->resume($queue); + $this->entityManager->refresh($task); + + verify($task->getStatus())->null(); + verify($newsletter->getStatus())->equals(NewsletterEntity::STATUS_ACTIVE); + } + public function testItReturnsCountOfQueuesByNewsletter() { $taskStatus = ScheduledTaskEntity::STATUS_PAUSED;