Refactor CronWorkerScheduler::reschedule() to use Doctrine

[MAILPOET-3844]
This commit is contained in:
Rodrigo Primo
2021-09-22 10:05:58 -03:00
committed by Veljko V
parent aec965f4f7
commit c6b008ba66
2 changed files with 8 additions and 11 deletions

View File

@@ -3,7 +3,6 @@
namespace MailPoet\Cron; namespace MailPoet\Cron;
use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Models\ScheduledTask;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository; use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon; use MailPoetVendor\Carbon\Carbon;
@@ -55,11 +54,11 @@ class CronWorkerScheduler {
return $task; return $task;
} }
public function reschedule(ScheduledTask $task, $timeout) { public function reschedule(ScheduledTaskEntity $task, $timeout) {
$scheduledAt = Carbon::createFromTimestamp($this->wp->currentTime('timestamp')); $scheduledAt = Carbon::createFromTimestamp($this->wp->currentTime('timestamp'));
$task->scheduledAt = $scheduledAt->addMinutes($timeout); $task->setScheduledAt($scheduledAt->addMinutes($timeout));
$task->setExpr('updated_at', 'NOW()'); $task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED);
$task->status = ScheduledTask::STATUS_SCHEDULED; $this->scheduledTaskRepository->persist($task);
$task->save(); $this->scheduledTaskRepository->flush();
} }
} }

View File

@@ -78,14 +78,12 @@ class CronWorkerSchedulerTest extends \MailPoetTest {
public function testItReschedulesTask() { public function testItReschedulesTask() {
$nextRunDate = Carbon::now()->subDay(); $nextRunDate = Carbon::now()->subDay();
$task = $this->cronWorkerScheduler->schedule('test', $nextRunDate); $task = $this->cronWorkerScheduler->schedule('test', $nextRunDate);
$oldModel = ScheduledTask::findOne($task->getId()); $this->cronWorkerScheduler->reschedule($task, 10);
$this->assertInstanceOf(ScheduledTask::class, $oldModel);
$this->cronWorkerScheduler->reschedule($oldModel, 10);
$tasks = $this->entityManager->getRepository(ScheduledTaskEntity::class)->findAll(); $tasks = $this->entityManager->getRepository(ScheduledTaskEntity::class)->findAll();
$this->entityManager->refresh($task);
expect($tasks)->count(1); expect($tasks)->count(1);
expect($tasks[0]->getType())->same('test'); expect($tasks[0]->getType())->same('test');
expect($tasks[0]->getStatus())->same(ScheduledTask::STATUS_SCHEDULED); expect($tasks[0]->getStatus())->same(ScheduledTaskEntity::STATUS_SCHEDULED);
expect($tasks[0]->getScheduledAt())->greaterThan($nextRunDate); expect($tasks[0]->getScheduledAt())->greaterThan($nextRunDate);
expect($tasks[0]->getScheduledAt())->greaterThan(Carbon::now()); expect($tasks[0]->getScheduledAt())->greaterThan(Carbon::now());
} }