Browse Source

DateTimeHelper timestampToDateTime: accept integers and null only

Fabian Peter Hammerle 8 years ago
parent
commit
513263a602
3 changed files with 47 additions and 10 deletions
  1. 3 1
      DateTimeHelper.php
  2. 11 0
      composer.json
  3. 33 9
      tests/DateTimeHelperTest.php

+ 3 - 1
DateTimeHelper.php

@@ -12,10 +12,12 @@ class DateTimeHelper
     {
         if($timestamp === null) {
             return null;
-        } else {
+        } elseif(is_int($timestamp)) {
             $dt = new \DateTime();
             $dt->setTimestamp($timestamp);
             return $dt;
+        } else {
+            throw new \InvalidArgumentException('expected integer or null');
         }
     }
 }

+ 11 - 0
composer.json

@@ -1,10 +1,21 @@
 {
     "name": "fphammerle/helpers",
     "description": "",
+    "authors" : [
+        {
+            "name": "Fabian Peter Hammerle",
+            "email": "fabian.hammerle@gmail.com"
+        }
+    ],
     "require": {
         "php": ">=5.3.0"
     },
     "require-dev": {
         "phpunit/phpunit": "4.8.*"
+    },
+    "autoload": {
+        "psr-4": {
+            "fphammerle\\helpers\\": ""
+        }
     }
 }

+ 33 - 9
tests/DateTimeHelperTest.php

@@ -6,7 +6,7 @@ use fphammerle\helpers\DateTimeHelper;
 
 class DateTimeHelperTest extends \PHPUnit_Framework_TestCase
 {
-    public function testTimestampToDateTime1()
+    public function testTimestampToDateTimeZero()
     {
         $this->assertEquals(
             0,
@@ -14,35 +14,59 @@ class DateTimeHelperTest extends \PHPUnit_Framework_TestCase
             );
     }
 
-    public function testTimestampToDateTime2()
+    public function testTimestampToDateTimeCompareUTC()
     {
         $created = DateTimeHelper::timestampToDateTime(1234567890);
         $expected = new \DateTime('2009-02-13 23:31:30', new \DateTimeZone('UTC'));
         $this->assertEquals($created->getTimestamp(), $expected->getTimestamp());
     }
 
-    public function testTimestampToDateTime3()
+    public function testTimestampToDateTimeCompareLocal()
     {
         $created = DateTimeHelper::timestampToDateTime(1234567890);
         $expected = new \DateTime('2009-02-14 00:31:30', new \DateTimeZone('Europe/Vienna'));
         $this->assertEquals($created->getTimestamp(), $expected->getTimestamp());
     }
 
-    public function testTimestampToDateTime4()
+    public function testTimestampToDateTimeSetLocal()
     {
         date_default_timezone_set('Europe/Vienna');
         $this->assertEquals(
-            123456,
-            DateTimeHelper::timestampToDateTime(123456)->getTimestamp()
+            DateTimeHelper::timestampToDateTime(123456)->getTimestamp(),
+            123456
             );
     }
 
-    public function testTimestampToDateTime5()
+    public function testTimestampToDateTimeSetUTC()
     {
         date_default_timezone_set('UTC');
         $this->assertEquals(
-            123456,
-            DateTimeHelper::timestampToDateTime(123456)->getTimestamp()
+            DateTimeHelper::timestampToDateTime(123456)->getTimestamp(),
+            123456
             );
     }
+
+    public function testTimestampToDateTimeNull()
+    {
+        $this->assertEquals(
+            DateTimeHelper::timestampToDateTime(null),
+            null
+            );
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testTimestampToDateInvalidArgumentFloat()
+    {
+        DateTimeHelper::timestampToDateTime(1.23);
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testTimestampToDateInvalidArgumentString()
+    {
+        DateTimeHelper::timestampToDateTime('');
+    }
 }