Merge pull request #10317 from silverstripe-terraformers/feature/mock-sleep

NEW: Mock sleep unit test utility.
This commit is contained in:
Guy Sartorelli 2022-05-27 13:52:01 +12:00 committed by GitHub
commit 2cf1725ba6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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', '');