mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-18 18:46:17 +00:00
Fixing issue where 'safe' option was not being considered when calling JavascriptHelper::codeBlock and then blockEnd. Increasing test code coverage for JavascriptHelper.
git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@6806 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
c0d86a76d3
commit
219dca11a0
2 changed files with 277 additions and 23 deletions
|
@ -142,7 +142,7 @@ class JavascriptHelper extends AppHelper {
|
||||||
}
|
}
|
||||||
switch ($key) {
|
switch ($key) {
|
||||||
case 'cache':
|
case 'cache':
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'safe':
|
case 'safe':
|
||||||
$this->safe = $val;
|
$this->safe = $val;
|
||||||
|
@ -174,7 +174,8 @@ class JavascriptHelper extends AppHelper {
|
||||||
$this->_cachedEvents[] = $script;
|
$this->_cachedEvents[] = $script;
|
||||||
} else {
|
} else {
|
||||||
$block = ($script !== null);
|
$block = ($script !== null);
|
||||||
if (($options['safe'] || $this->safe) && !($this->_cacheAll && $options['allowCache'])) {
|
$safe = ($options['safe'] || $this->safe);
|
||||||
|
if ($safe && !($this->_cacheAll && $options['allowCache'])) {
|
||||||
$script = "\n" . '//<![CDATA[' . "\n" . $script;
|
$script = "\n" . '//<![CDATA[' . "\n" . $script;
|
||||||
if ($block) {
|
if ($block) {
|
||||||
$script .= "\n" . '//]]>' . "\n";
|
$script .= "\n" . '//]]>' . "\n";
|
||||||
|
@ -188,13 +189,15 @@ class JavascriptHelper extends AppHelper {
|
||||||
@ob_end_clean();
|
@ob_end_clean();
|
||||||
ob_start();
|
ob_start();
|
||||||
return null;
|
return null;
|
||||||
|
} else if (!$block) {
|
||||||
|
$this->_blockOptions = $options;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($options['inline']) {
|
if ($options['inline']) {
|
||||||
if ($block) {
|
if ($block) {
|
||||||
return sprintf($this->tags['javascriptblock'], $script);
|
return sprintf($this->tags['javascriptblock'], $script);
|
||||||
} else {
|
} else {
|
||||||
return sprintf($this->tags['javascriptstart']);
|
return sprintf($this->tags['javascriptstart']).ife($safe, "\n" . '//<![CDATA[' . "\n", '');
|
||||||
}
|
}
|
||||||
} elseif ($block) {
|
} elseif ($block) {
|
||||||
$view =& ClassRegistry::getObject('view');
|
$view =& ClassRegistry::getObject('view');
|
||||||
|
@ -214,6 +217,7 @@ class JavascriptHelper extends AppHelper {
|
||||||
echo $this->__scriptBuffer;
|
echo $this->__scriptBuffer;
|
||||||
$this->__scriptBuffer = null;
|
$this->__scriptBuffer = null;
|
||||||
$options = $this->_blockOptions;
|
$options = $this->_blockOptions;
|
||||||
|
$safe = ($options['safe'] || $this->safe);
|
||||||
$this->_blockOptions = array();
|
$this->_blockOptions = array();
|
||||||
$this->inBlock = false;
|
$this->inBlock = false;
|
||||||
|
|
||||||
|
@ -226,7 +230,7 @@ class JavascriptHelper extends AppHelper {
|
||||||
$this->_cachedEvents[] = $script;
|
$this->_cachedEvents[] = $script;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return $this->tags['javascriptend'];
|
return ife($safe, "\n" . '//]]>' . "\n", '').$this->tags['javascriptend'];
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Returns a JavaScript include tag (SCRIPT element). If the filename is prefixed with "/",
|
* Returns a JavaScript include tag (SCRIPT element). If the filename is prefixed with "/",
|
||||||
|
|
|
@ -33,6 +33,15 @@ class TheJsTestController extends Controller {
|
||||||
var $name = 'TheTest';
|
var $name = 'TheTest';
|
||||||
var $uses = null;
|
var $uses = null;
|
||||||
}
|
}
|
||||||
|
class TheView extends View {
|
||||||
|
function scripts() {
|
||||||
|
return $this->__scripts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class TestJavascriptObject {
|
||||||
|
var $property1 = 'value1';
|
||||||
|
var $property2 = 2;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Short description for class.
|
* Short description for class.
|
||||||
*
|
*
|
||||||
|
@ -41,13 +50,20 @@ class TheJsTestController extends Controller {
|
||||||
* @since CakePHP Test Suite v 1.0.0.0
|
* @since CakePHP Test Suite v 1.0.0.0
|
||||||
*/
|
*/
|
||||||
class JavascriptTest extends UnitTestCase {
|
class JavascriptTest extends UnitTestCase {
|
||||||
|
|
||||||
function setUp() {
|
function setUp() {
|
||||||
$this->Javascript = new JavascriptHelper();
|
$this->Javascript =& new JavascriptHelper();
|
||||||
$this->Javascript->Html = new HtmlHelper();
|
$this->Javascript->Html =& new HtmlHelper();
|
||||||
$this->Javascript->Form = new FormHelper();
|
$this->Javascript->Form =& new FormHelper();
|
||||||
$view =& new View(new TheJsTestController());
|
$this->View =& new TheView(new TheJsTestController());
|
||||||
ClassRegistry::addObject('view', $view);
|
ClassRegistry::addObject('view', $this->View);
|
||||||
|
}
|
||||||
|
|
||||||
|
function tearDown() {
|
||||||
|
unset($this->Javascript->Html);
|
||||||
|
unset($this->Javascript->Form);
|
||||||
|
unset($this->Javascript);
|
||||||
|
ClassRegistry::removeObject('view');
|
||||||
|
unset($this->View);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testLink() {
|
function testLink() {
|
||||||
|
@ -86,6 +102,23 @@ class JavascriptTest extends UnitTestCase {
|
||||||
$result = $this->Javascript->link('some_other_path/myfile.1.2.2.min');
|
$result = $this->Javascript->link('some_other_path/myfile.1.2.2.min');
|
||||||
$expected = '<script type="text/javascript" src="js/some_other_path/myfile.1.2.2.min.js"></script>';
|
$expected = '<script type="text/javascript" src="js/some_other_path/myfile.1.2.2.min.js"></script>';
|
||||||
$this->assertEqual($result, $expected);
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->link('http://example.com/jquery.js');
|
||||||
|
$expected = '<script type="text/javascript" src="http://example.com/jquery.js"></script>';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->link(array('prototype.js', 'scriptaculous.js'));
|
||||||
|
$this->assertPattern('/^\s*<script\s+type="text\/javascript"\s+src=".*js\/prototype\.js"[^<>]*><\/script>/', $result);
|
||||||
|
$this->assertPattern('/<\/script>\s*<script[^<>]+>/', $result);
|
||||||
|
$this->assertPattern('/<script\s+type="text\/javascript"\s+src=".*js\/scriptaculous\.js"[^<>]*><\/script>\s*$/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->link('jquery-1.1.2', false);
|
||||||
|
$resultScripts = $this->View->scripts();
|
||||||
|
reset($resultScripts);
|
||||||
|
$expected = '<script type="text/javascript" src="js/jquery-1.1.2.js"></script>';
|
||||||
|
$this->assertNull($result);
|
||||||
|
$this->assertEqual(count($resultScripts), 1);
|
||||||
|
$this->assertEqual(current($resultScripts), $expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testFilteringAndTimestamping() {
|
function testFilteringAndTimestamping() {
|
||||||
|
@ -99,7 +132,7 @@ class JavascriptTest extends UnitTestCase {
|
||||||
|
|
||||||
Configure::write('Asset.timestamp', true);
|
Configure::write('Asset.timestamp', true);
|
||||||
$result = $this->Javascript->link('__cake_js_test');
|
$result = $this->Javascript->link('__cake_js_test');
|
||||||
$this->assertPattern('/^<script[^<>]+src=".*js\/__cake_js_test.js\?' . $timestamp . '[0-9]{2}"[^<>]*>/', $result);
|
$this->assertPattern('/^<script[^<>]+src=".*js\/__cake_js_test\.js\?' . $timestamp . '[0-9]{2}"[^<>]*>/', $result);
|
||||||
|
|
||||||
$debug = Configure::read('debug');
|
$debug = Configure::read('debug');
|
||||||
Configure::write('debug', 0);
|
Configure::write('debug', 0);
|
||||||
|
@ -114,17 +147,67 @@ class JavascriptTest extends UnitTestCase {
|
||||||
Configure::write('debug', $debug);
|
Configure::write('debug', $debug);
|
||||||
Configure::write('Asset.timestamp', false);
|
Configure::write('Asset.timestamp', false);
|
||||||
|
|
||||||
|
$old = Configure::read('Asset.filter.js');
|
||||||
|
|
||||||
Configure::write('Asset.filter.js', 'js.php');
|
Configure::write('Asset.filter.js', 'js.php');
|
||||||
$result = $this->Javascript->link('__cake_js_test');
|
$result = $this->Javascript->link('__cake_js_test');
|
||||||
$this->assertPattern('/^<script[^<>]+src=".*cjs\/__cake_js_test.js"[^<>]*>/', $result);
|
$this->assertPattern('/^<script[^<>]+src=".*cjs\/__cake_js_test\.js"[^<>]*>/', $result);
|
||||||
Configure::write('Asset.filter.js', false);
|
|
||||||
|
Configure::write('Asset.filter.js', true);
|
||||||
|
$result = $this->Javascript->link('jquery-1.1.2');
|
||||||
|
$expected = '<script type="text/javascript" src="cjs/jquery-1.1.2.js"></script>';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
if ($old === null) {
|
||||||
|
Configure::delete('Asset.filter.js');
|
||||||
|
}
|
||||||
|
|
||||||
unlink(JS . '__cake_js_test.js');
|
unlink(JS . '__cake_js_test.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testValue() {
|
||||||
|
$result = $this->Javascript->value(array('title' => 'New thing', 'indexes' => array(5, 6, 7, 8)));
|
||||||
|
$expected = '{"title":"New thing","indexes":[5,6,7,8]}';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->value(null);
|
||||||
|
$this->assertEqual($result, 'null');
|
||||||
|
|
||||||
|
$result = $this->Javascript->value(true);
|
||||||
|
$this->assertEqual($result, 'true');
|
||||||
|
|
||||||
|
$result = $this->Javascript->value(false);
|
||||||
|
$this->assertEqual($result, 'false');
|
||||||
|
|
||||||
|
$result = $this->Javascript->value(5);
|
||||||
|
$this->assertEqual($result, '5');
|
||||||
|
|
||||||
|
$result = $this->Javascript->value(floatval(5.3));
|
||||||
|
$this->assertPattern('/^5.3[0]+$/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->value('');
|
||||||
|
$expected = '""';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->value('CakePHP' . "\n" . 'Rapid Development Framework');
|
||||||
|
$expected = '"CakePHP\\nRapid Development Framework"';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->value('CakePHP' . "\r\n" . 'Rapid Development Framework' . "\r" . 'For PHP');
|
||||||
|
$expected = '"CakePHP\\nRapid Development Framework\\nFor PHP"';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->value('CakePHP: "Rapid Development Framework"');
|
||||||
|
$expected = '"CakePHP: \\"Rapid Development Framework\\""';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->value('CakePHP: \'Rapid Development Framework\'');
|
||||||
|
$expected = '"CakePHP: \\\'Rapid Development Framework\\\'"';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
}
|
||||||
|
|
||||||
function testObjectGeneration() {
|
function testObjectGeneration() {
|
||||||
$object = array('title' => 'New thing', 'indexes' => array(5, 6, 7, 8));
|
$object = array('title' => 'New thing', 'indexes' => array(5, 6, 7, 8));
|
||||||
|
|
||||||
$result = $this->Javascript->object($object);
|
$result = $this->Javascript->object($object);
|
||||||
$expected = '{"title":"New thing","indexes":[5,6,7,8]}';
|
$expected = '{"title":"New thing","indexes":[5,6,7,8]}';
|
||||||
$this->assertEqual($result, $expected);
|
$this->assertEqual($result, $expected);
|
||||||
|
@ -153,11 +236,27 @@ class JavascriptTest extends UnitTestCase {
|
||||||
$expected = '{"Object":{"1":true,"2":false,"3":-3.14159265359,"4":-10}}';
|
$expected = '{"Object":{"1":true,"2":false,"3":-3.14159265359,"4":-10}}';
|
||||||
$this->assertEqual($result, $expected);
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
if ($this->Javascript->useNative) {
|
if (function_exists('json_encode')) {
|
||||||
$this->Javascript->useNative = false;
|
$old = $this->Javascript->useNative;
|
||||||
$this->testObjectGeneration();
|
|
||||||
$this->Javascript->useNative = true;
|
$this->Javascript->useNative = true;
|
||||||
|
$object = array('title' => 'New thing', 'indexes' => array(5, 6, 7, 8));
|
||||||
|
$result = $this->Javascript->object($object);
|
||||||
|
$expected = '{"title":"New thing","indexes":[5,6,7,8]}';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
$this->Javascript->useNative = $old;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$result = $this->Javascript->object(new TestJavascriptObject());
|
||||||
|
$expected = '{"property1":"value1","property2":2}';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$object = array('title' => 'New thing', 'indexes' => array(5, 6, 7, 8));
|
||||||
|
$result = $this->Javascript->object($object, array('block' => true));
|
||||||
|
$expected = '{"title":"New thing","indexes":[5,6,7,8]}';
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*' . str_replace('/', '\\/', preg_quote($expected)) . '\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+<\/script>$/s', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testScriptBlock() {
|
function testScriptBlock() {
|
||||||
|
@ -167,12 +266,43 @@ class JavascriptTest extends UnitTestCase {
|
||||||
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->codeBlock('something', false, false);
|
||||||
|
$this->assertPattern('/^<script[^<>]+>something<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">something<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->codeBlock('something', true, true);
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->codeBlock('something', false, true);
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
$result = $this->Javascript->codeBlock('something', array('safe' => false));
|
$result = $this->Javascript->codeBlock('something', array('safe' => false));
|
||||||
$this->assertPattern('/^<script[^<>]+>something<\/script>$/', $result);
|
$this->assertPattern('/^<script[^<>]+>something<\/script>$/', $result);
|
||||||
$this->assertPattern('/^<script[^<>]+type="text\/javascript">something<\/script>$/', $result);
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">something<\/script>$/', $result);
|
||||||
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->codeBlock('something', array('safe' => true));
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->codeBlock(null, array('safe' => true, 'allowCache' => false));
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*$/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->blockEnd();
|
||||||
|
$this->assertPattern('/^\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
|
||||||
$result = $this->Javascript->codeBlock('something');
|
$result = $this->Javascript->codeBlock('something');
|
||||||
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*something\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+<\/script>$/s', $result);
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+<\/script>$/s', $result);
|
||||||
|
@ -180,11 +310,11 @@ class JavascriptTest extends UnitTestCase {
|
||||||
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
$result = $this->Javascript->codeBlock();
|
$result = $this->Javascript->codeBlock();
|
||||||
$this->assertPattern('/^<script[^<>]+>$/', $result);
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*$/', $result);
|
||||||
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
$result = $this->Javascript->blockEnd();
|
$result = $this->Javascript->blockEnd();
|
||||||
$this->assertEqual("</script>", $result);
|
$this->assertPattern('/^\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
|
||||||
$this->Javascript->cacheEvents(false, true);
|
$this->Javascript->cacheEvents(false, true);
|
||||||
$this->assertFalse($this->Javascript->inBlock);
|
$this->assertFalse($this->Javascript->inBlock);
|
||||||
|
@ -207,8 +337,6 @@ class JavascriptTest extends UnitTestCase {
|
||||||
$this->Javascript->codeBlock(null, array('inline' => false));
|
$this->Javascript->codeBlock(null, array('inline' => false));
|
||||||
echo '$(function(){ /* ... */ });';
|
echo '$(function(){ /* ... */ });';
|
||||||
$this->Javascript->blockEnd();
|
$this->Javascript->blockEnd();
|
||||||
|
|
||||||
$view =& ClassRegistry::getObject('view');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testEvent() {
|
function testEvent() {
|
||||||
|
@ -223,10 +351,132 @@ class JavascriptTest extends UnitTestCase {
|
||||||
$this->assertPattern('/^<script[^<>]+type="text\/javascript">' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '<\/script>$/', $result);
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '<\/script>$/', $result);
|
||||||
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->event('myId', 'click');
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { }, false);')) . '.+<\/script>$/s', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->event('myId', 'click', 'something();', false);
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->event('myId', 'click', 'something();', array('useCapture' => true));
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, true);')) . '.+<\/script>$/s', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->event('document', 'load');
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe(document, \'load\', function(event) { }, false);')) . '.+<\/script>$/s', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->event('$(\'myId\')', 'click', 'something();', array('safe' => false));
|
||||||
|
$this->assertPattern('/^<script[^<>]+>[^<>]+<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->event('\'document\'', 'load', 'something();', array('safe' => false));
|
||||||
|
$this->assertPattern('/^<script[^<>]+>[^<>]+<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">' . str_replace('/', '\\/', preg_quote('Event.observe(\'document\', \'load\', function(event) { something(); }, false);')) . '<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$this->Javascript->cacheEvents();
|
||||||
|
$result = $this->Javascript->event('myId', 'click', 'something();');
|
||||||
|
$this->assertNull($result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->getCache();
|
||||||
|
$this->assertPattern('/^' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '$/s', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->event('#myId', 'alert(event);');
|
||||||
|
$this->assertNull($result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->getCache();
|
||||||
|
$this->assertPattern('/^\s*var Rules = {\s*\'#myId\': function\(element, event\)\s*{\s*alert\(event\);\s*}\s*}\s*EventSelectors\.start\(Rules\);\s*$/s', $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
function tearDown() {
|
function testWriteEvents() {
|
||||||
unset($this->Javascript);
|
$this->Javascript->cacheEvents();
|
||||||
|
$result = $this->Javascript->event('myId', 'click', 'something();');
|
||||||
|
$this->assertNull($result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->writeEvents();
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->getCache();
|
||||||
|
$this->assertTrue(empty($result));
|
||||||
|
|
||||||
|
$this->Javascript->cacheEvents();
|
||||||
|
$result = $this->Javascript->event('myId', 'click', 'something();');
|
||||||
|
$this->assertNull($result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->writeEvents(false);
|
||||||
|
$resultScripts = $this->View->scripts();
|
||||||
|
reset($resultScripts);
|
||||||
|
$this->assertNull($result);
|
||||||
|
$this->assertEqual(count($resultScripts), 1);
|
||||||
|
$result = current($resultScripts);
|
||||||
|
$this->assertPattern('/^<script[^<>]+>\s*' . str_replace('/', '\\/', preg_quote('//<![CDATA[')) . '\s*.+\s*' . str_replace('/', '\\/', preg_quote('//]]>')) . '\s*<\/script>$/', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript">.+' . str_replace('/', '\\/', preg_quote('Event.observe($(\'myId\'), \'click\', function(event) { something(); }, false);')) . '.+<\/script>$/s', $result);
|
||||||
|
$this->assertPattern('/^<script[^<>]+type="text\/javascript"[^<>]*>/', $result);
|
||||||
|
$this->assertNoPattern('/^<script[^type]=[^<>]*>/', $result);
|
||||||
|
|
||||||
|
$result = $this->Javascript->getCache();
|
||||||
|
$this->assertTrue(empty($result));
|
||||||
|
}
|
||||||
|
|
||||||
|
function testEscapeScript() {
|
||||||
|
$result = $this->Javascript->escapeScript('');
|
||||||
|
$expected = '';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeScript('CakePHP' . "\n" . 'Rapid Development Framework');
|
||||||
|
$expected = 'CakePHP\\nRapid Development Framework';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeScript('CakePHP' . "\r\n" . 'Rapid Development Framework' . "\r" . 'For PHP');
|
||||||
|
$expected = 'CakePHP\\nRapid Development Framework\\nFor PHP';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeScript('CakePHP: "Rapid Development Framework"');
|
||||||
|
$expected = 'CakePHP: \\"Rapid Development Framework\\"';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeScript('CakePHP: \'Rapid Development Framework\'');
|
||||||
|
$expected = 'CakePHP: \\\'Rapid Development Framework\\\'';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testEscapeString() {
|
||||||
|
$result = $this->Javascript->escapeString('');
|
||||||
|
$expected = '';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeString('CakePHP' . "\n" . 'Rapid Development Framework');
|
||||||
|
$expected = 'CakePHP\\nRapid Development Framework';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeString('CakePHP' . "\r\n" . 'Rapid Development Framework' . "\r" . 'For PHP');
|
||||||
|
$expected = 'CakePHP\\nRapid Development Framework\\nFor PHP';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeString('CakePHP: "Rapid Development Framework"');
|
||||||
|
$expected = 'CakePHP: \\"Rapid Development Framework\\"';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
|
|
||||||
|
$result = $this->Javascript->escapeString('CakePHP: \'Rapid Development Framework\'');
|
||||||
|
$expected = 'CakePHP: \\\'Rapid Development Framework\\\'';
|
||||||
|
$this->assertEqual($result, $expected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue