cronWorkerScheduler = $this->diContainer->get(CronWorkerScheduler::class); ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table); } public function testItSchedulesTask() { $nextRunDate = Carbon::now()->addWeek(); $this->cronWorkerScheduler->schedule('test', $nextRunDate); $tasks = ScheduledTask::findMany(); expect($tasks)->count(1); expect($tasks[0]->type)->same('test'); expect($tasks[0]->status)->same(ScheduledTask::STATUS_SCHEDULED); expect($tasks[0]->scheduled_at)->same($nextRunDate->format('Y-m-d H:i:s')); } public function testItDoesNotScheduleTaskTwice() { $nextRunDate = Carbon::now()->addWeek(); $this->cronWorkerScheduler->schedule('test', $nextRunDate); expect(ScheduledTask::findMany())->count(1); $result = $this->cronWorkerScheduler->schedule('test', $nextRunDate); expect($result)->false(); expect(ScheduledTask::findMany())->count(1); } public function testItReschedulesTask() { $nextRunDate = Carbon::now()->subDay(); $task = $this->cronWorkerScheduler->schedule('test', $nextRunDate); $this->cronWorkerScheduler->reschedule($task, 10); $tasks = ScheduledTask::findMany(); expect($tasks)->count(1); expect($tasks[0]->type)->same('test'); expect($tasks[0]->status)->same(ScheduledTask::STATUS_SCHEDULED); expect($tasks[0]->scheduled_at)->greaterThan($nextRunDate); expect($tasks[0]->scheduled_at)->greaterThan(Carbon::now()); } public function _after() { ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table); } }