Refactor ScheduledTasks::rescheduleProgressively() to use Doctrine

[MAILPOET-3844]
This commit is contained in:
Rodrigo Primo
2021-09-22 12:20:01 -03:00
committed by Veljko V
parent 82d4b8cb23
commit 2c78db9e04
14 changed files with 139 additions and 99 deletions

View File

@@ -4,6 +4,7 @@ namespace MailPoet\Test\Cron;
use MailPoet\Cron\CronWorkerScheduler;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Test\DataFactories\ScheduledTask as ScheduledTaskFactory;
use MailPoetVendor\Carbon\Carbon;
require_once __DIR__ . '/Workers/SimpleWorkerMockImplementation.php';
@@ -12,8 +13,12 @@ class CronWorkerSchedulerTest extends \MailPoetTest {
/** @var CronWorkerScheduler */
private $cronWorkerScheduler;
/** @var ScheduledTaskFactory */
private $scheduledTaskFactory;
public function _before() {
$this->cronWorkerScheduler = $this->diContainer->get(CronWorkerScheduler::class);
$this->scheduledTaskFactory = new ScheduledTaskFactory();
$this->truncateEntity(ScheduledTaskEntity::class);
}
@@ -87,6 +92,23 @@ class CronWorkerSchedulerTest extends \MailPoetTest {
expect($tasks[0]->getScheduledAt())->greaterThan(Carbon::now());
}
public function testItCanRescheduleTasksProgressively() {
$task = $this->scheduledTaskFactory->create('test', null, new Carbon());
$scheduledAt = $task->getScheduledAt();
$timeout = $this->cronWorkerScheduler->rescheduleProgressively($task);
expect($timeout)->equals(ScheduledTaskEntity::BASIC_RESCHEDULE_TIMEOUT);
expect($scheduledAt < $task->getScheduledAt())->true();
expect($task->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED);
$timeout = $this->cronWorkerScheduler->rescheduleProgressively($task);
expect($timeout)->equals(ScheduledTaskEntity::BASIC_RESCHEDULE_TIMEOUT * 2);
$task->setRescheduleCount(123456); // too many
$timeout = $this->cronWorkerScheduler->rescheduleProgressively($task);
expect($timeout)->equals(ScheduledTaskEntity::MAX_RESCHEDULE_TIMEOUT);
}
public function _after() {
$this->truncateEntity(ScheduledTaskEntity::class);
}