Fix handling of times

This commit is contained in:
Dane Everitt 2018-08-31 21:12:10 -07:00
parent 178b8f8ce6
commit bcb3f5d5fa
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
2 changed files with 7 additions and 6 deletions

View file

@ -6,6 +6,7 @@ use DateTimeInterface;
use Cron\CronExpression;
use Cake\Chronos\Chronos;
use Pterodactyl\Models\Schedule;
use Cake\Chronos\ChronosInterface;
use Pterodactyl\Services\Schedules\Tasks\RunTaskService;
use Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface;
@ -84,14 +85,14 @@ class ProcessScheduleService
* Get the timestamp to store in the database as the next_run time for a schedule.
*
* @param string $formatted
* @return string
* @return \Cake\Chronos\ChronosInterface
*/
private function getRunAtTime(string $formatted)
private function getRunAtTime(string $formatted): ChronosInterface
{
if (! is_null($this->runTimeOverride)) {
return $this->runTimeOverride->format(Chronos::ATOM);
return $this->runTimeOverride instanceof ChronosInterface ? $this->runTimeOverride : Chronos::instance($this->runTimeOverride);
}
return CronExpression::factory($formatted)->getNextRunDate()->format(Chronos::ATOM);
return Chronos::instance(CronExpression::factory($formatted)->getNextRunDate());
}
}

View file

@ -64,7 +64,7 @@ class ProcessScheduleServiceTest extends TestCase
$formatted = sprintf('%s %s %s * %s', $model->cron_minute, $model->cron_hour, $model->cron_day_of_month, $model->cron_day_of_week);
$this->repository->shouldReceive('update')->with($model->id, [
'is_processing' => true,
'next_run_at' => CronExpression::factory($formatted)->getNextRunDate()->format(Chronos::ATOM),
'next_run_at' => Chronos::parse(CronExpression::factory($formatted)->getNextRunDate()->format(Chronos::ATOM)),
]);
$this->runnerService->shouldReceive('handle')->with($task)->once()->andReturnNull();
@ -84,7 +84,7 @@ class ProcessScheduleServiceTest extends TestCase
$this->repository->shouldReceive('update')->with($model->id, [
'is_processing' => true,
'next_run_at' => Chronos::now()->addSeconds(15)->toAtomString(),
'next_run_at' => Chronos::now()->addSeconds(15),
]);
$this->runnerService->shouldReceive('handle')->with($task)->once()->andReturnNull();