Use a DateTime object instead of a timestamp
This commit is contained in:
parent
43391f8f47
commit
a370c29068
3 changed files with 58 additions and 47 deletions
|
@ -61,18 +61,18 @@ interface INotification {
|
|||
public function getUser();
|
||||
|
||||
/**
|
||||
* @param int $timestamp
|
||||
* @param \DateTime $dateTime
|
||||
* @return $this
|
||||
* @throws \InvalidArgumentException if the timestamp are invalid
|
||||
* @since 8.2.0
|
||||
* @throws \InvalidArgumentException if the $dateTime is invalid
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function setTimestamp($timestamp);
|
||||
public function setDateTime(\DateTime $dateTime);
|
||||
|
||||
/**
|
||||
* @return int
|
||||
* @since 8.2.0
|
||||
* @return \DateTime
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function getTimestamp();
|
||||
public function getDateTime();
|
||||
|
||||
/**
|
||||
* @param string $type
|
||||
|
|
|
@ -29,8 +29,8 @@ class Notification implements INotification {
|
|||
/** @var string */
|
||||
protected $user;
|
||||
|
||||
/** @var int */
|
||||
protected $timestamp;
|
||||
/** @var \DateTime */
|
||||
protected $dateTime;
|
||||
|
||||
/** @var string */
|
||||
protected $objectType;
|
||||
|
@ -80,7 +80,8 @@ class Notification implements INotification {
|
|||
public function __construct() {
|
||||
$this->app = '';
|
||||
$this->user = '';
|
||||
$this->timestamp = 0;
|
||||
$this->dateTime = new \DateTime();
|
||||
$this->dateTime->setTimestamp(0);
|
||||
$this->objectType = '';
|
||||
$this->objectId = 0;
|
||||
$this->subject = '';
|
||||
|
@ -140,25 +141,25 @@ class Notification implements INotification {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param int $timestamp
|
||||
* @param \DateTime $dateTime
|
||||
* @return $this
|
||||
* @throws \InvalidArgumentException if the timestamp is invalid
|
||||
* @since 8.2.0
|
||||
* @throws \InvalidArgumentException if the $dateTime is invalid
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function setTimestamp($timestamp) {
|
||||
if (!is_int($timestamp)) {
|
||||
throw new \InvalidArgumentException('The given timestamp is invalid');
|
||||
public function setDateTime(\DateTime $dateTime) {
|
||||
if ($dateTime->getTimestamp() === 0) {
|
||||
throw new \InvalidArgumentException('The given date time is invalid');
|
||||
}
|
||||
$this->timestamp = $timestamp;
|
||||
$this->dateTime = $dateTime;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
* @since 8.2.0
|
||||
* @return \DateTime
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function getTimestamp() {
|
||||
return $this->timestamp;
|
||||
public function getDateTime() {
|
||||
return $this->dateTime;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -438,7 +439,7 @@ class Notification implements INotification {
|
|||
&&
|
||||
$this->getUser() !== ''
|
||||
&&
|
||||
$this->getTimestamp() !== 0
|
||||
$this->getDateTime()->getTimestamp() !== 0
|
||||
&&
|
||||
$this->getObjectType() !== ''
|
||||
&&
|
||||
|
|
|
@ -62,14 +62,6 @@ class NotificationTest extends TestCase {
|
|||
return $dataSets;
|
||||
}
|
||||
|
||||
protected function dataValidInt() {
|
||||
return [
|
||||
[0],
|
||||
[1],
|
||||
[time()],
|
||||
];
|
||||
}
|
||||
|
||||
protected function dataInvalidInt() {
|
||||
return [
|
||||
[true],
|
||||
|
@ -139,32 +131,47 @@ class NotificationTest extends TestCase {
|
|||
$this->notification->setUser($user);
|
||||
}
|
||||
|
||||
public function dataSetTimestamp() {
|
||||
return $this->dataValidInt();
|
||||
public function dataSetDateTime() {
|
||||
$past = new \DateTime();
|
||||
$past->sub(new \DateInterval('P1Y'));
|
||||
$current = new \DateTime();
|
||||
$future = new \DateTime();
|
||||
$future->add(new \DateInterval('P1Y'));
|
||||
|
||||
return [
|
||||
[$past],
|
||||
[$current],
|
||||
[$future],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataSetTimestamp
|
||||
* @param int $timestamp
|
||||
* @dataProvider dataSetDateTime
|
||||
* @param \DateTime $dateTime
|
||||
*/
|
||||
public function testSetTimestamp($timestamp) {
|
||||
$this->assertSame(0, $this->notification->getTimestamp());
|
||||
$this->assertSame($this->notification, $this->notification->setTimestamp($timestamp));
|
||||
$this->assertSame($timestamp, $this->notification->getTimestamp());
|
||||
public function testSetDateTime(\DateTime $dateTime) {
|
||||
$this->assertSame(0, $this->notification->getDateTime()->getTimestamp());
|
||||
$this->assertSame($this->notification, $this->notification->setDateTime($dateTime));
|
||||
$this->assertSame($dateTime, $this->notification->getDateTime());
|
||||
}
|
||||
|
||||
public function dataSetTimestampInvalid() {
|
||||
return $this->dataInvalidInt();
|
||||
public function dataSetDateTimeZero() {
|
||||
$nineTeenSeventy = new \DateTime();
|
||||
$nineTeenSeventy->setTimestamp(0);
|
||||
return [
|
||||
[$nineTeenSeventy],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataSetTimestampInvalid
|
||||
* @param mixed $timestamp
|
||||
* @dataProvider dataSetDateTimeZero
|
||||
* @param \DateTime $dateTime
|
||||
*
|
||||
* @expectedException \InvalidArgumentException
|
||||
* @expectedMessage 'The given date time is invalid'
|
||||
*/
|
||||
public function testSetTimestampInvalid($timestamp) {
|
||||
$this->notification->setTimestamp($timestamp);
|
||||
public function testSetDateTimeZero($dateTime) {
|
||||
$this->notification->setDateTime($dateTime);
|
||||
}
|
||||
|
||||
public function dataSetObject() {
|
||||
|
@ -578,7 +585,7 @@ class NotificationTest extends TestCase {
|
|||
->setMethods([
|
||||
'getApp',
|
||||
'getUser',
|
||||
'getTimestamp',
|
||||
'getDateTime',
|
||||
'getObjectType',
|
||||
'getObjectId',
|
||||
])
|
||||
|
@ -592,9 +599,12 @@ class NotificationTest extends TestCase {
|
|||
->method('getUser')
|
||||
->willReturn($user);
|
||||
|
||||
$dateTime = new \DateTime();
|
||||
$dateTime->setTimestamp($timestamp);
|
||||
|
||||
$notification->expects($this->any())
|
||||
->method('getTimestamp')
|
||||
->willReturn($timestamp);
|
||||
->method('getDateTime')
|
||||
->willReturn($dateTime);
|
||||
|
||||
$notification->expects($this->any())
|
||||
->method('getObjectType')
|
||||
|
|
Loading…
Reference in a new issue