Browse Source

Refactored Helper::assetUrl() a bit and added test cases.

ADmad 14 years ago
parent
commit
b6f99bc0b9
2 changed files with 36 additions and 5 deletions
  1. 32 0
      lib/Cake/Test/Case/View/HelperTest.php
  2. 4 5
      lib/Cake/View/Helper.php

+ 32 - 0
lib/Cake/Test/Case/View/HelperTest.php

@@ -590,6 +590,38 @@ class HelperTest extends CakeTestCase {
 	}
 
 /**
+ * test assetUrl application
+ *
+ * @return void
+ */
+	public function testAssetUrl() {
+		$this->Helper->webroot = '';
+		$_timestamp = Configure::read('Asset.timestamp');
+
+		$result = $this->Helper->assetUrl(array(
+				'controller' => 'js',
+				'action' => 'post',
+				'ext' => 'js'
+			),
+			array('fullBase' => true)
+		);
+		$this->assertEquals('http://localhost/js/post.js', $result);
+
+		$result = $this->Helper->assetUrl('foo.jpg', array('pathPrefix' => 'img/'));
+		$this->assertEquals('img/foo.jpg', $result);
+
+		$result = $this->Helper->assetUrl('foo.jpg', array('fullBase' => true));
+		$this->assertEquals('http://localhost/foo.jpg', $result);
+
+		Configure::write('Asset.timestamp', 'force');
+
+		$result = $this->Helper->assetUrl('cake.generic.css', array('pathPrefix' => CSS_URL));
+		$this->assertRegExp('/' . preg_quote(CSS_URL . 'cake.generic.css?', '/') . '[0-9]+/', $result);
+
+		Configure::write('Asset.timestamp', $_timestamp);
+	}
+
+/**
  * test assetTimestamp with plugins and themes
  *
  * @return void

+ 4 - 5
lib/Cake/View/Helper.php

@@ -271,17 +271,16 @@ class Helper extends Object {
  */
 	public function assetUrl($path, array $options) {
 		if (is_array($path)) {
-			$path = $this->url($path);
+			$path = $this->url($path, !empty($options['fullBase']));
 		} elseif (strpos($path, '://') === false) {
 			if (!empty($options['pathPrefix']) && $path[0] !== '/') {
 				$path = $options['pathPrefix'] . $path;
 			}
 			$path = $this->assetTimestamp($this->webroot($path));
-		}
 
-		if (!empty($options['fullBase'])) {
-			$path = $this->url('/', true) . $path;
-			unset($options['fullBase']);
+			if (!empty($options['fullBase'])) {
+				$path = $this->url('/', true) . $path;
+			}
 		}
 
 		return $path;