<?php namespace Fierce; $db = $this->mock('DB'); Env::push('db', $db); $db->ScheduledTask = $this->mock('DBEntity', 'ScheduledTask'); $taskController = new ScheduledTaskController(); $taskController->db = $db; // check if a scheduled task runs properly $task = (object) ['id' => '63E3BACB-3F7B-4C77-A303-F03FB2EE117C', 'status' => 'pending', 'date' => new \DateTime(), 'repeat' => null, 'class' => 'Fierce\\Test\\DummyTask', 'method' => 'run', 'log' => null]; $db->ScheduledTask->prepareForCall('find', null, [$task]); $db->ScheduledTask->prepareForCall('byId', null, $task); $activeWrite = null; $completeWrite = null; $db->ScheduledTask->prepareForCall('write', null, function ($id, $row, $allowOverwrite) use(&$activeWrite, &$completeWrite) { if ($row->status == 'active') { $activeWrite = $row; return; } if ($row->status == 'complete') { $completeWrite = $row; return; } }); $taskController->defaultAction(); $this->assert($activeWrite != null, 'Task marked active'); $log = json_decode($activeWrite->log); $logEntry = $log[0]; $this->assert((new \DateTime())->getTimestamp() - (new \DateTime($logEntry->started))->getTimestamp() >= 0 && (new \DateTime())->getTimestamp() - (new \DateTime($logEntry->started))->getTimestamp() < 10, 'Active task included a valid start date'); $log = json_decode($completeWrite->log);
<?php namespace Fierce; require '../../../../config.php'; ScheduledTaskController::run();