public function testRun()
 {
     //Create 2 jobLogs, and set one with a date over a week ago (8 days ago) for the endDateTime
     $eightDaysAgoTimestamp = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 60 * 60 * 24 * 8);
     $jobLog = new JobLog();
     $jobLog->type = 'Monitor';
     $jobLog->startDateTime = $eightDaysAgoTimestamp;
     $jobLog->endDateTime = $eightDaysAgoTimestamp;
     $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR;
     $jobLog->isProcessed = false;
     $jobLog->save();
     $jobLog2 = new JobLog();
     $jobLog2->type = 'ImportCleanup';
     $jobLog2->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $jobLog2->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $jobLog2->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR;
     $jobLog2->isProcessed = false;
     $jobLog2->save();
     $sql = 'select count(*) count from item';
     $row = R::getRow($sql);
     $this->assertEquals(4, $row['count']);
     $job = new JobLogCleanupJob();
     $this->assertTrue($job->run());
     $jobLogs = JobLog::getAll();
     $this->assertEquals(1, count($jobLogs));
     $this->assertEquals($jobLog2->id, $jobLogs[0]->id);
     $sql = 'select count(*) count from item';
     $row = R::getRow($sql);
     $this->assertEquals(3, $row['count']);
 }
 public function testRunMonitorJob()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     foreach (JobLog::getAll() as $jobLog) {
         $jobLog->delete();
     }
     $isJobInProgress = false;
     JobsManagerUtil::runNonMonitorJob('Test', new MessageLogger(), $isJobInProgress);
     $this->assertFalse($isJobInProgress);
     $jobLogs = JobLog::getAll();
     $this->assertEquals(1, count($jobLogs));
     $this->assertEquals(0, $jobLogs[0]->isProcessed);
     $jobLogId = $jobLogs[0]->id;
     $jobLogs[0]->forget();
     //to ensure cache is cleared before running monitor job
     $isJobInProgress = false;
     JobsManagerUtil::runMonitorJob(new MessageLogger(), $isJobInProgress);
     $this->assertFalse($isJobInProgress);
     $jobLogs = JobLog::getAll();
     $this->assertEquals(2, count($jobLogs));
     $this->assertEquals($jobLogId, $jobLogs[0]->id);
     $this->assertEquals(1, $jobLogs[0]->isProcessed);
     $this->assertEquals(0, $jobLogs[1]->isProcessed);
 }