Set proper status when resending activable newsletter type

[MAILPOET-6241]
This commit is contained in:
Rostislav Wolny
2024-11-28 12:29:27 +01:00
committed by Aschepikov
parent ab3d6a1fcb
commit 79de8cc17c
2 changed files with 38 additions and 1 deletions

View File

@ -127,7 +127,10 @@ class SendingTaskSubscribers extends APIEndpoint {
$taskSubscriber->resetToUnprocessed();
$taskSubscriber->getTask()->setStatus(null);
$newsletter->setStatus(NewsletterEntity::STATUS_SENDING);
$newsletter->setStatus(
$newsletter->canBeSetActive() ? NewsletterEntity::STATUS_ACTIVE : NewsletterEntity::STATUS_SENDING
);
// Each repository flushes all changes
$this->scheduledTaskSubscribersRepository->flush();
return $this->successResponse([]);

View File

@ -210,4 +210,38 @@ class SendingTaskSubscribersTest extends \MailPoetTest {
$this->entityManager->refresh($this->newsletter);
verify($this->newsletter->getStatus())->equals(NewsletterEntity::STATUS_SENDING);
}
public function testItCanResendAutomationEmail() {
$newsletter = (new NewsletterFactory())->withSubject('My Automatic Newsletter')
->withType(NewsletterEntity::TYPE_AUTOMATION)
->withStatus(NewsletterEntity::STATUS_ACTIVE)
->withBody(Fixtures::get('newsletter_body_template'))
->withSendingQueue()
->create();
$queue = $newsletter->getLatestQueue();
$task = $queue->getTask();
$failedSubscriber = $this->subscriberFactory
->withEmail('failed2@example.com')
->withFirstName('Failed')
->withLastName('Test')
->create();
$failedSubscriberTask = $this->taskSubscriberFactory->createFailed($task, $failedSubscriber, 'Something went wrong!');
$res = $this->endpoint->resend([
'taskId' => $task->getId(),
'subscriberId' => $failedSubscriber->getId(),
]);
verify($res->status)->equals(APIResponse::STATUS_OK);
$this->entityManager->refresh($newsletter);
$this->entityManager->refresh($task);
$this->entityManager->refresh($failedSubscriberTask);
verify($newsletter->getStatus())->equals(NewsletterEntity::STATUS_ACTIVE);
verify($task->getStatus())->equals(null);
verify($failedSubscriberTask->getProcessed())->equals(0);
verify($failedSubscriberTask->getFailed())->equals(0);
}
}