Refactor cron worker scheduler test to Doctrine

[MAILPOET-3726]
This commit is contained in:
Rostislav Wolny
2021-09-06 13:02:38 +02:00
committed by Veljko V
parent 1c4eb15f93
commit b9815c609f

View File

@@ -3,9 +3,9 @@
namespace MailPoet\Test\Cron; namespace MailPoet\Test\Cron;
use MailPoet\Cron\CronWorkerScheduler; use MailPoet\Cron\CronWorkerScheduler;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
use MailPoetVendor\Carbon\Carbon; use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Idiorm\ORM;
require_once __DIR__ . '/Workers/SimpleWorkerMockImplementation.php'; require_once __DIR__ . '/Workers/SimpleWorkerMockImplementation.php';
@@ -15,28 +15,27 @@ class CronWorkerSchedulerTest extends \MailPoetTest {
public function _before() { public function _before() {
$this->cronWorkerScheduler = $this->diContainer->get(CronWorkerScheduler::class); $this->cronWorkerScheduler = $this->diContainer->get(CronWorkerScheduler::class);
ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table); $this->truncateEntity(ScheduledTaskEntity::class);
} }
public function testItSchedulesTask() { public function testItSchedulesTask() {
$nextRunDate = Carbon::now()->addWeek(); $nextRunDate = Carbon::now()->addWeek();
$this->cronWorkerScheduler->schedule('test', $nextRunDate); $this->cronWorkerScheduler->schedule('test', $nextRunDate);
$tasks = $this->entityManager->getRepository(ScheduledTaskEntity::class)->findAll();
$tasks = ScheduledTask::findMany();
expect($tasks)->count(1); expect($tasks)->count(1);
expect($tasks[0]->type)->same('test'); expect($tasks[0]->getType())->same('test');
expect($tasks[0]->status)->same(ScheduledTask::STATUS_SCHEDULED); expect($tasks[0]->getStatus())->same(ScheduledTask::STATUS_SCHEDULED);
expect($tasks[0]->scheduled_at)->same($nextRunDate->format('Y-m-d H:i:s')); expect($tasks[0]->getScheduledAt())->same($nextRunDate);
} }
public function testItDoesNotScheduleTaskTwice() { public function testItDoesNotScheduleTaskTwice() {
$nextRunDate = Carbon::now()->addWeek(); $nextRunDate = Carbon::now()->addWeek();
$task = $this->cronWorkerScheduler->schedule('test', $nextRunDate); $task = $this->cronWorkerScheduler->schedule('test', $nextRunDate);
expect(ScheduledTask::findMany())->count(1); expect($this->entityManager->getRepository(ScheduledTaskEntity::class)->findAll())->count(1);
$result = $this->cronWorkerScheduler->schedule('test', $nextRunDate); $result = $this->cronWorkerScheduler->schedule('test', $nextRunDate);
expect($result->getId())->equals($task->getId()); expect($result->getId())->equals($task->getId());
expect(ScheduledTask::findMany())->count(1); expect($this->entityManager->getRepository(ScheduledTaskEntity::class)->findAll())->count(1);
} }
public function testItReschedulesTask() { public function testItReschedulesTask() {
@@ -45,15 +44,16 @@ class CronWorkerSchedulerTest extends \MailPoetTest {
$oldModel = ScheduledTask::findOne($task->getId()); $oldModel = ScheduledTask::findOne($task->getId());
$this->assertInstanceOf(ScheduledTask::class, $oldModel); $this->assertInstanceOf(ScheduledTask::class, $oldModel);
$this->cronWorkerScheduler->reschedule($oldModel, 10); $this->cronWorkerScheduler->reschedule($oldModel, 10);
$tasks = ScheduledTask::findMany(); $tasks = $this->entityManager->getRepository(ScheduledTaskEntity::class)->findAll();
$this->entityManager->refresh($task);
expect($tasks)->count(1); expect($tasks)->count(1);
expect($tasks[0]->type)->same('test'); expect($tasks[0]->getType())->same('test');
expect($tasks[0]->status)->same(ScheduledTask::STATUS_SCHEDULED); expect($tasks[0]->getStatus())->same(ScheduledTask::STATUS_SCHEDULED);
expect($tasks[0]->scheduled_at)->greaterThan($nextRunDate); expect($tasks[0]->getScheduledAt())->greaterThan($nextRunDate);
expect($tasks[0]->scheduled_at)->greaterThan(Carbon::now()); expect($tasks[0]->getScheduledAt())->greaterThan(Carbon::now());
} }
public function _after() { public function _after() {
ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table); $this->truncateEntity(ScheduledTaskEntity::class);
} }
} }