mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #10317 from silverstripe-terraformers/feature/mock-sleep
NEW: Mock sleep unit test utility.
This commit is contained in:
commit
2cf1725ba6
@ -1359,6 +1359,22 @@ if (class_exists(IsEqualCanonicalizing::class)) {
|
||||
$this->getName(false)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test safe version of sleep()
|
||||
*
|
||||
* @param int $seconds
|
||||
* @return DBDatetime
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function mockSleep(int $seconds): DBDatetime
|
||||
{
|
||||
$now = DBDatetime::now();
|
||||
$now->modify(sprintf('+ %d seconds', $seconds));
|
||||
DBDatetime::set_mock_now($now);
|
||||
|
||||
return $now;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2655,4 +2671,20 @@ class SapphireTest extends PHPUnit_Framework_TestCase implements TestOnly
|
||||
}
|
||||
return $rules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test safe version of sleep()
|
||||
*
|
||||
* @param int $seconds
|
||||
* @return DBDatetime
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function mockSleep(int $seconds): DBDatetime
|
||||
{
|
||||
$now = DBDatetime::now();
|
||||
$now->modify(sprintf('+ %d seconds', $seconds));
|
||||
DBDatetime::set_mock_now($now);
|
||||
|
||||
return $now;
|
||||
}
|
||||
}
|
||||
|
@ -58,6 +58,25 @@ class DBDatetimeTest extends SapphireTest
|
||||
});
|
||||
}
|
||||
|
||||
public function testMockSleep()
|
||||
{
|
||||
DBDatetime::set_mock_now('2010-01-01 10:00:00');
|
||||
|
||||
$this->mockSleep(1);
|
||||
$this->assertEquals(
|
||||
'2010-01-01 10:00:01',
|
||||
DBDatetime::now()->Rfc2822(),
|
||||
'We expect the time to move forward by 1 second'
|
||||
);
|
||||
|
||||
$this->mockSleep(10);
|
||||
$this->assertEquals(
|
||||
'2010-01-01 10:00:11',
|
||||
DBDatetime::now()->Rfc2822(),
|
||||
'We expect the time to move forward by 10 seconds'
|
||||
);
|
||||
}
|
||||
|
||||
public function testSetNullAndZeroValues()
|
||||
{
|
||||
$date = DBDatetime::create_field('Datetime', '');
|
||||
|
Loading…
Reference in New Issue
Block a user