Merge pull request #11719 from nextcloud/techdebt/noid/allow-to-mock-new-datetime

Allow to inject/mock `new \DateTime()` similar to time()
This commit is contained in:
Morris Jobke 2018-10-10 14:54:15 +02:00 committed by GitHub
commit 0acae1d4aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 85 deletions

View File

@ -23,8 +23,9 @@
*/
use OCA\Files_Trashbin\Expiration;
use \OCA\Files_Trashbin\Tests;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use PHPUnit\Framework\MockObject\MockObject;
class ExpirationTest extends \Test\TestCase {
const SECONDS_PER_DAY = 86400; //60*60*24
@ -182,58 +183,27 @@ class ExpirationTest extends \Test\TestCase {
}
/**
*
* @param int $time
* @return \OCP\AppFramework\Utility\ITimeFactory
* @return ITimeFactory|MockObject
*/
private function getMockedTimeFactory($time){
$mockedTimeFactory = $this->getMockBuilder('\OCP\AppFramework\Utility\ITimeFactory')
->disableOriginalConstructor()
->setMethods(['getTime'])
->getMock()
;
$mockedTimeFactory->expects($this->any())->method('getTime')->will(
$this->returnValue($time)
);
$mockedTimeFactory = $this->createMock(ITimeFactory::class);
$mockedTimeFactory->expects($this->any())
->method('getTime')
->willReturn($time);
return $mockedTimeFactory;
}
/**
*
* @param string $returnValue
* @return IConfig
* @return IConfig|MockObject
*/
private function getMockedConfig($returnValue){
$mockedConfig = $this->getMockBuilder(IConfig::class)
->disableOriginalConstructor()
->setMethods(
[
'setSystemValues',
'setSystemValue',
'getSystemValue',
'getFilteredSystemValue',
'deleteSystemValue',
'getAppKeys',
'setAppValue',
'getAppValue',
'deleteAppValue',
'deleteAppValues',
'setUserValue',
'getUserValue',
'getUserValueForUsers',
'getUserKeys',
'deleteUserValue',
'deleteAllUserValues',
'deleteAppFromAllUsers',
'getUsersForUserValue'
]
)
->getMock()
;
$mockedConfig->expects($this->any())->method('getSystemValue')->will(
$this->returnValue($returnValue)
);
$mockedConfig = $this->createMock(IConfig::class);
$mockedConfig->expects($this->any())
->method('getSystemValue')
->willReturn($returnValue);
return $mockedConfig;
}

View File

@ -25,7 +25,9 @@
namespace OCA\Files_Versions\Tests;
use \OCA\Files_Versions\Expiration;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use PHPUnit\Framework\MockObject\MockObject;
class ExpirationTest extends \Test\TestCase {
const SECONDS_PER_DAY = 86400; //60*60*24
@ -151,58 +153,27 @@ class ExpirationTest extends \Test\TestCase {
}
/**
*
* @param int $time
* @return \OCP\AppFramework\Utility\ITimeFactory
* @return ITimeFactory|MockObject
*/
private function getMockedTimeFactory($time){
$mockedTimeFactory = $this->getMockBuilder('\OCP\AppFramework\Utility\ITimeFactory')
->disableOriginalConstructor()
->setMethods(['getTime'])
->getMock()
;
$mockedTimeFactory->expects($this->any())->method('getTime')->will(
$this->returnValue($time)
);
$mockedTimeFactory = $this->createMock(ITimeFactory::class);
$mockedTimeFactory->expects($this->any())
->method('getTime')
->willReturn($time);
return $mockedTimeFactory;
}
/**
*
* @param string $returnValue
* @return \OCP\IConfig
* @return IConfig|MockObject
*/
private function getMockedConfig($returnValue){
$mockedConfig = $this->getMockBuilder(IConfig::class)
->disableOriginalConstructor()
->setMethods(
[
'setSystemValues',
'setSystemValue',
'getSystemValue',
'getFilteredSystemValue',
'deleteSystemValue',
'getAppKeys',
'setAppValue',
'getAppValue',
'deleteAppValue',
'deleteAppValues',
'setUserValue',
'getUserValue',
'getUserValueForUsers',
'getUserKeys',
'deleteUserValue',
'deleteAllUserValues',
'deleteAppFromAllUsers',
'getUsersForUserValue'
]
)
->getMock()
;
$mockedConfig->expects($this->any())->method('getSystemValue')->will(
$this->returnValue($returnValue)
);
$mockedConfig = $this->createMock(IConfig::class);
$mockedConfig->expects($this->any())
->method('getSystemValue')
->willReturn($returnValue);
return $mockedConfig;
}

View File

@ -37,9 +37,18 @@ class TimeFactory implements ITimeFactory {
/**
* @return int the result of a call to time()
*/
public function getTime() : int {
public function getTime(): int {
return time();
}
/**
* @param string $time
* @param \DateTimeZone $timezone
* @return \DateTime
* @since 15.0.0
*/
public function getDateTime(string $time = 'now', \DateTimeZone $timezone = null): \DateTime {
return new \DateTime($time, $timezone);
}
}

View File

@ -35,6 +35,14 @@ interface ITimeFactory {
* @return int the result of a call to time()
* @since 8.0.0
*/
public function getTime() : int;
public function getTime(): int;
/**
* @param string $time
* @param \DateTimeZone $timezone
* @return \DateTime
* @since 15.0.0
*/
public function getDateTime(string $time = 'now', \DateTimeZone $timezone = null): \DateTime;
}