Set proper status by typing in newsletter update and resume sending

[MAILPOET-6241]
This commit is contained in:
Rostislav Wolny
2024-11-28 17:35:32 +01:00
committed by Aschepikov
parent babc7453ad
commit 80c1888edd
4 changed files with 33 additions and 2 deletions

View File

@@ -327,7 +327,7 @@ class NewsletterSaveController {
} }
if ($newsletter->getStatus() === NewsletterEntity::STATUS_CORRUPT) { if ($newsletter->getStatus() === NewsletterEntity::STATUS_CORRUPT) {
$newsletter->setStatus(NewsletterEntity::STATUS_SENDING); $newsletter->setStatus($newsletter->canBeSetActive() ? NewsletterEntity::STATUS_ACTIVE : NewsletterEntity::STATUS_SENDING);
} }
} }

View File

@@ -197,7 +197,7 @@ class SendingQueuesRepository extends Repository {
$queue->setNewsletterRenderedBody(null); $queue->setNewsletterRenderedBody(null);
$this->persist($queue); $this->persist($queue);
} }
$newsletter->setStatus(NewsletterEntity::STATUS_SENDING); $newsletter->setStatus($newsletter->canBeSetActive() ? NewsletterEntity::STATUS_ACTIVE : NewsletterEntity::STATUS_SENDING);
$task->setStatus(null); $task->setStatus(null);
$this->flush(); $this->flush();
} }

View File

@@ -411,6 +411,18 @@ class NewsletterSaveControllerTest extends \MailPoetTest {
verify($newsletter->getReplyToAddress())->same('reply@test.com'); 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 { private function createNewsletter(string $type, string $status = NewsletterEntity::STATUS_DRAFT): NewsletterEntity {
$newsletter = new NewsletterEntity(); $newsletter = new NewsletterEntity();
$newsletter->setType($type); $newsletter->setType($type);

View File

@@ -91,6 +91,25 @@ class SendingQueuesRepositoryTest extends \MailPoetTest {
verify($newsletter->getStatus())->equals(NewsletterEntity::STATUS_SENDING); 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() { public function testItReturnsCountOfQueuesByNewsletter() {
$taskStatus = ScheduledTaskEntity::STATUS_PAUSED; $taskStatus = ScheduledTaskEntity::STATUS_PAUSED;