/** * Test method for running cron jobs in the right time * * @covers \Liebig\Cron\Cron::run */ public function testRunWithTime() { $i = 0; Cron::add('test1', '* * * * *', function () use(&$i) { $i++; return null; }); $runResult1 = Cron::run(); $this->assertEquals(1, $i); $this->assertEquals(0, $runResult1['errors']); $this->assertEquals(1, count($runResult1['crons'])); $this->assertEquals('test1', $runResult1['crons'][0]['name']); $this->assertEquals(null, $runResult1['crons'][0]['return']); $this->assertEquals(-1, $runResult1['inTime']); Cron::add('test2', '* * * * *', function () { return 'return of test2'; }); $runResult2 = Cron::run(); $this->assertEquals(2, $i); $this->assertEquals(1, $runResult2['errors']); $this->assertEquals(2, count($runResult2['crons'])); $this->assertEquals('test1', $runResult2['crons'][0]['name']); $this->assertEquals(null, $runResult2['crons'][0]['return']); $this->assertEquals('test2', $runResult2['crons'][1]['name']); $this->assertEquals('return of test2', $runResult2['crons'][1]['return']); sleep(60); $runResult3 = Cron::run(); $this->assertEquals(3, $i); $this->assertEquals(true, $runResult3['inTime']); sleep(25); $runResult4 = Cron::run(); $this->assertEquals(4, $i); $this->assertEquals(false, $runResult4['inTime']); sleep(95); $runResult5 = Cron::run(); $this->assertEquals($i, 5); $this->assertEquals(false, $runResult5['inTime']); Cron::setRunInterval(2); sleep(120); $runResult6 = Cron::run(); $this->assertEquals($i, 6); $this->assertEquals(true, $runResult6['inTime']); }