Fix bug when changing ScheduledTask in_progress field

In 3394568, SendingQueue::stopProgress() was refactored to use Doctrine
but a typo introduced a bug causing this method to set
ScheduledTaskEntity::inProgress to true instead of false:

3394568792 (diff-3a26b2d8faf9cc01efd5aef47b058c088c0de01b8074c3be7cefd9adb77fbaaaR551)

This luckly was caught by the
EditorCouponCest.php:seeNoticeWhenCouponCantGenerateAndResumeSending
acceptance test.

This commit fixes the problem and also adds two integration tests to
protect against similar regressions in the future.

[MAILPOET-5682]
This commit is contained in:
Rodrigo Primo
2023-11-23 11:00:51 -03:00
committed by Jan Jakeš
parent 6c176450c0
commit e96251db7e
2 changed files with 26 additions and 1 deletions

View File

@@ -559,7 +559,7 @@ class SendingQueue {
} }
private function stopProgress(ScheduledTaskEntity $task): void { private function stopProgress(ScheduledTaskEntity $task): void {
$task->setInProgress(true); $task->setInProgress(false);
$this->scheduledTasksRepository->flush(); $this->scheduledTasksRepository->flush();
} }

View File

@@ -1393,6 +1393,31 @@ class SendingQueueTest extends \MailPoetTest {
verify($newsletter->getStatus())->equals(NewsletterEntity::STATUS_SENDING); verify($newsletter->getStatus())->equals(NewsletterEntity::STATUS_SENDING);
} }
public function testProcessMarksScheduledTaskInProgressAsFalseWhenProperlyProcessingTask() {
$sendingQueueWorker = $this->getSendingQueueWorker();
$sendingQueueWorker->process();
$this->assertSame(false, $this->scheduledTask->getInProgress());
}
public function testProcessMarksScheduledTaskProgressAsFinishedWhenThereIsAnErrorProcessingTask() {
$mailerTask = $this->createMock(MailerTask::class);
$mailerTask
->method('send')
->willThrowException(new \Exception());
$mailerTask
->method('getProcessingMethod')
->willReturn('individual');
$sendingQueueWorker = $this->getSendingQueueWorker($mailerTask);
try {
$sendingQueueWorker->process();
} catch (\Exception $e) {
// do nothing
}
$this->assertSame(false, $this->scheduledTask->getInProgress());
}
private function createNewsletter(string $type, $subject, string $status = NewsletterEntity::STATUS_DRAFT): NewsletterEntity { private function createNewsletter(string $type, $subject, string $status = NewsletterEntity::STATUS_DRAFT): NewsletterEntity {
$newsletter = new NewsletterEntity(); $newsletter = new NewsletterEntity();
$newsletter->setType($type); $newsletter->setType($type);