Browse Source

fix tests

euromark 12 years ago
parent
commit
e06ee26a7e

+ 28 - 13
Lib/Utility/TimeLib.php

@@ -7,13 +7,13 @@ App::uses('CakeTime', 'Utility');
 class TimeLib extends CakeTime {
 
 	/**
-	 * Calculate the GMT offset from a timezone string
+	 * Detect if a timezone has a DST
 	 *
 	 * @param string|DateTimeZone $timezone User's timezone string or DateTimeZone object
-	 * @return int $offset
+	 * @return boolean
 	 * 2012-05-20 ms
 	 */
-	public function getGmtOffset($timezone = null) {
+	public static function hasDaylightSavingTime($timezone = null) {
 		$timezone = self::timezone($timezone);
 		# a date outside of DST
 		$offset = $timezone->getOffset(new DateTime('@' . mktime(0, 0, 0, 2, 1, date('Y'))));
@@ -23,8 +23,21 @@ class TimeLib extends CakeTime {
 		$offset2 = $timezone->getOffset(new DateTime('@' . mktime(0, 0, 0, 8, 1, date('Y'))));
 		$offset2 = $offset2 / HOUR;
 
-		# lets remove the DST offset if the case
-		return max($offset2, $offset) - abs($offset2 - $offset);
+		return abs($offset2 - $offset) > 0;
+	}
+
+	/**
+	 * Calculate the current GMT offset from a timezone string (respecting DST)
+	 *
+	 * @param string|DateTimeZone $timezone User's timezone string or DateTimeZone object
+	 * @return int Offset in hours
+	 * 2012-05-20 ms
+	 */
+	public function getGmtOffset($timezone = null) {
+		$timezone = self::timezone($timezone);
+		$offset = $timezone->getOffset(new DateTime('@' . time()));
+		$offset = $offset / HOUR;
+		return $offset;
 	}
 
 	/**
@@ -437,10 +450,11 @@ class TimeLib extends CakeTime {
 		$defaults = array('default' => '-----', 'timezone' => null);
 		$options = array_merge($defaults, $options);
 
-		$date = null;
-		if ($dateString !== null) {
-			$date = self::fromString($dateString, $options['timezone']);
+		if ($dateString === null) {
+			$dateString = time();
 		}
+		$date = self::fromString($dateString, $options['timezone']);
+
 		if ($date === null || $date === false || $date <= 0) {
 			return $options['default'];
 		}
@@ -454,7 +468,6 @@ class TimeLib extends CakeTime {
 		return parent::_strftime($format, $date);
 	}
 
-
 	/**
 	 * outputs Date(time) Sting nicely formatted
 	 * @param string $dateString,
@@ -465,13 +478,15 @@ class TimeLib extends CakeTime {
 	 * 2009-03-31 ms
 	 */
 	public static function niceDate($dateString = null, $format = null, $options = array()) {
-		$defaults = array('default'=>'-----', 'timezone'=>null);
+		$defaults = array('default' => '-----', 'timezone' => null);
 		$options = array_merge($defaults, $options);
 
-		$date = null;
-		if ($dateString !== null) {
-			$date = self::fromString($dateString, $options['timezone']);
+		if ($dateString === null) {
+			$dateString = time();
 		}
+		$date = null;
+		$date = self::fromString($dateString, $options['timezone']);
+
 		if ($date === null || $date === false || $date <= 0) {
 			return $options['default'];
 		}

+ 35 - 25
Test/Case/Lib/Utility/TimeLibTest.php

@@ -13,26 +13,6 @@ class TimeLibTest extends MyCakeTestCase {
 		$this->assertInstanceOf('TimeLib', $this->Time);
 	}
 
-	public function testTimezone() {
-		$timezone = TimeLib::timezone();
-		// usually UTC
-		$name = $timezone->getName();
-		$this->debug($name);
-		$this->assertTrue(!empty($name));
-
-		$location = $timezone->getLocation();
-		$this->debug($location);
-		$this->assertTrue(!empty($location['country_code']));
-		$this->assertTrue(isset($location['latitude']));
-		$this->assertTrue(isset($location['longitude']));
-
-		$offset = $timezone->getOffset(new DateTime('@' . mktime(0, 0, 0, 1, 1, date('Y'))));
-		$this->debug($offset);
-
-		$phpTimezone = date_default_timezone_get();
-		$this->assertEquals($name, $phpTimezone);
-	}
-
 	/**
 	 * Currently only works with timezoned localized values, not with UTC!!!
 	 */
@@ -98,7 +78,7 @@ class TimeLibTest extends MyCakeTestCase {
 
 	public function testNiceDate() {
 		$res = setlocale(LC_TIME, 'de_DE.UTF-8', 'deu_deu');
-		//debug($res);
+		$this->assertTrue(!empty($res));
 
 		$values = array(
 			array('2009-12-01 00:00:00', FORMAT_NICE_YMD, '01.12.2009'),
@@ -106,7 +86,7 @@ class TimeLibTest extends MyCakeTestCase {
 		);
 		foreach ($values as $v) {
 			$ret = TimeLib::niceDate($v[0], $v[1]);
-			//pr($ret);
+			//$this->debug($ret);
 			$this->assertEquals($ret, $v[2]);
 		}
 	}
@@ -114,7 +94,7 @@ class TimeLibTest extends MyCakeTestCase {
 	public function testLocalDate() {
 		$this->skipIf(php_sapi_name() === 'cli', 'for now');
 		$res = setlocale(LC_TIME, array('de_DE.UTF-8', 'deu_deu'));
-		//debug($res);
+		$this->assertTrue(!empty($res));
 
 		$values = array(
 			array('2009-12-01 00:00:00', FORMAT_LOCAL_YMD, '01.12.2009'),
@@ -122,7 +102,7 @@ class TimeLibTest extends MyCakeTestCase {
 		);
 		foreach ($values as $v) {
 			$ret = TimeLib::localDate($v[0], $v[1]);
-			//pr($ret);
+			//$this->debug($ret);
 			$this->assertEquals($ret, $v[2]);
 		}
 	}
@@ -131,7 +111,7 @@ class TimeLibTest extends MyCakeTestCase {
 		$this->out($this->_header(__FUNCTION__));
 
 		$ret = TimeLib::parseLocalizedDate('15-Feb-2009', 'j-M-Y', 'start');
-		//pr($ret);
+		//$this->debug($ret);
 		$this->assertEquals($ret, '2009-02-15 00:00:00');
 
 		# problem when not passing months or days as well - no way of knowing how exact the date was
@@ -660,4 +640,34 @@ class TimeLibTest extends MyCakeTestCase {
 		$this->assertEquals($is, '9:30');
 	}
 
+	public function testHasDaylightSavingTime() {
+		$timezone = 'Europe/Berlin';
+		$x = TimeLib::hasDaylightSavingTime($timezone);
+		$this->assertTrue($x);
+
+		$timezone = 'Asia/Baghdad';
+		$x = TimeLib::hasDaylightSavingTime($timezone);
+		$this->assertFalse($x);
+	}
+
+	public function testTimezone() {
+		$timezone = TimeLib::timezone();
+		// usually UTC
+		$name = $timezone->getName();
+		$this->debug($name);
+		$this->assertTrue(!empty($name));
+
+		$location = $timezone->getLocation();
+		$this->debug($location);
+		$this->assertTrue(!empty($location['country_code']));
+		$this->assertTrue(isset($location['latitude']));
+		$this->assertTrue(isset($location['longitude']));
+
+		$offset = $timezone->getOffset(new DateTime('@' . mktime(0, 0, 0, 1, 1, date('Y'))));
+		$this->debug($offset);
+
+		$phpTimezone = date_default_timezone_get();
+		$this->assertEquals($name, $phpTimezone);
+	}
+
 }

+ 3 - 3
Test/Case/View/Helper/DiffHelperTest.php

@@ -12,9 +12,9 @@ App::uses('MyCakeTestCase', 'Tools.TestSuite');
  */
 class DiffHelperTest extends MyCakeTestCase {
 
-/**
- * setUp method
- */
+	/**
+	 * setUp method
+	 */
 	public function setUp() {
 		parent::setUp();
 

+ 1 - 1
View/Helper/GoogleMapV3Helper.php

@@ -27,7 +27,7 @@
  * New in v1.4:
  * You can now either keep map() + script(), or you can now write the script to the buffer with
  * map() + finalize(). You can then decide wether the JS should be in the head or the footer of your layout.
- * Don't forget to put `$this->Js->writeBuffer(array('inline' => true));` somewhere in your layout then, though.
+ * Don't forget to put `echo $this->Js->writeBuffer(array('inline' => true));` somewhere in your layout then, though.
  *
  * You can now also add directions using addDirections().
  *