/home/desid573/public_html/family/pdd/lib/Cake/Test/Case/View/Helper
Edit: /home/desid573/public_html/family/pdd/lib/Cake/Test/Case/View/Helper/JsHelperTest.php (27458B)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
* @package Cake.Test.Case.View.Helper
* @since CakePHP(tm) v 1.3
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
App::uses('HtmlHelper', 'View/Helper');
App::uses('JsHelper', 'View/Helper');
App::uses('JsBaseEngineHelper', 'View/Helper');
App::uses('FormHelper', 'View/Helper');
App::uses('View', 'View');
App::uses('ClassRegistry', 'Utility');
/**
* Class JsEncodingObject
*
* @package Cake.Test.Case.View.Helper
*/
class JsEncodingObject {
protected $_title = 'Old thing';
//@codingStandardsIgnoreStart
private $__noshow = 'Never ever';
//@codingStandardsIgnoreEnd
}
/**
* Class OptionEngineHelper
*
* @package Cake.Test.Case.View.Helper
*/
class OptionEngineHelper extends JsBaseEngineHelper {
protected $_optionMap = array(
'request' => array(
'complete' => 'success',
'request' => 'beforeSend',
'type' => 'dataType'
)
);
/**
* test method for testing option mapping
*
* @param array $options
* @return array
*/
public function testMap($options = array()) {
return $this->_mapOptions('request', $options);
}
/**
* test method for option parsing
*
* @param $options
* @param array $safe
* @return void
*/
public function testParseOptions($options, $safe = array()) {
return $this->_parseOptions($options, $safe);
}
public function get($selector) {
}
public function event($type, $callback, $options = array()) {
}
public function domReady($functionBody) {
}
public function each($callback) {
}
public function effect($name, $options = array()) {
}
public function request($url, $options = array()) {
}
public function drag($options = array()) {
}
public function drop($options = array()) {
}
public function sortable($options = array()) {
}
public function slider($options = array()) {
}
public function serializeForm($options = array()) {
}
}
/**
* JsHelper TestCase.
*
* @package Cake.Test.Case.View.Helper
*/
class JsHelperTest extends CakeTestCase {
/**
* Regexp for CDATA start block
*
* @var string
*/
public $cDataStart = 'preg:/^\/\/[\s\r\n]*/';
/**
* setUp method
*
* @return void
*/
public function setUp() {
parent::setUp();
Configure::write('Asset.timestamp', false);
$controller = null;
$this->View = $this->getMock('View', array('append'), array(&$controller));
$this->Js = new JsHelper($this->View, 'Option');
$request = new CakeRequest(null, false);
$this->Js->request = $request;
$this->Js->Html = new HtmlHelper($this->View);
$this->Js->Html->request = $request;
$this->Js->Form = new FormHelper($this->View);
$this->Js->Form->request = $request;
$this->Js->Form->Html = $this->Js->Html;
$this->Js->OptionEngine = new OptionEngineHelper($this->View);
}
/**
* tearDown method
*
* @return void
*/
public function tearDown() {
parent::tearDown();
unset($this->Js);
}
/**
* Switches $this->Js to a mocked engine.
*
* @return void
*/
protected function _useMock() {
$request = new CakeRequest(null, false);
$this->Js = new JsHelper($this->View, array('TestJs'));
$this->Js->TestJsEngine = $this->getMock('JsBaseEngineHelper', array(), array($this->View));
$this->Js->request = $request;
$this->Js->Html = new HtmlHelper($this->View);
$this->Js->Html->request = $request;
$this->Js->Form = new FormHelper($this->View);
$this->Js->Form->request = $request;
$this->Js->Form->Html = new HtmlHelper($this->View);
}
/**
* test object construction
*
* @return void
*/
public function testConstruction() {
$js = new JsHelper($this->View);
$this->assertEquals(array('Html', 'Form', 'JqueryEngine'), $js->helpers);
$js = new JsHelper($this->View, array('mootools'));
$this->assertEquals(array('Html', 'Form', 'mootoolsEngine'), $js->helpers);
$js = new JsHelper($this->View, 'prototype');
$this->assertEquals(array('Html', 'Form', 'prototypeEngine'), $js->helpers);
$js = new JsHelper($this->View, 'MyPlugin.Dojo');
$this->assertEquals(array('Html', 'Form', 'MyPlugin.DojoEngine'), $js->helpers);
}
/**
* test that methods dispatch internally and to the engine class
*
* @expectedException PHPUnit_Framework_Error_Warning
* @return void
*/
public function testMethodDispatching() {
$this->_useMock();
$this->Js->TestJsEngine
->expects($this->once())
->method('event')
->with('click', 'callback');
$this->Js->event('click', 'callback');
$this->Js->TestJsEngine = new StdClass();
$this->Js->someMethodThatSurelyDoesntExist();
}
/**
* Test that method dispatching for events respects buffer parameters and bufferedMethods Lists.
*
* @return void
*/
public function testEventDispatchWithBuffering() {
$this->_useMock();
$this->Js->TestJsEngine->bufferedMethods = array('event', 'sortables');
$this->Js->TestJsEngine->expects($this->exactly(3))
->method('event')
->will($this->returnValue('This is an event call'));
$this->Js->event('click', 'foo');
$result = $this->Js->getBuffer();
$this->assertEquals(1, count($result));
$this->assertEquals('This is an event call', $result[0]);
$result = $this->Js->event('click', 'foo', array('buffer' => false));
$buffer = $this->Js->getBuffer();
$this->assertTrue(empty($buffer));
$this->assertEquals('This is an event call', $result);
$result = $this->Js->event('click', 'foo', false);
$buffer = $this->Js->getBuffer();
$this->assertTrue(empty($buffer));
$this->assertEquals('This is an event call', $result);
}
/**
* Test that method dispatching for effects respects buffer parameters and bufferedMethods Lists.
*
* @return void
*/
public function testEffectDispatchWithBuffering() {
$this->_useMock();
$this->Js->TestJsEngine->expects($this->exactly(4))
->method('effect')
->will($this->returnValue('I am not buffered.'));
$result = $this->Js->effect('slideIn');
$buffer = $this->Js->getBuffer();
$this->assertTrue(empty($buffer));
$this->assertEquals('I am not buffered.', $result);
$result = $this->Js->effect('slideIn', true);
$buffer = $this->Js->getBuffer();
$this->assertNull($result);
$this->assertEquals(1, count($buffer));
$this->assertEquals('I am not buffered.', $buffer[0]);
$result = $this->Js->effect('slideIn', array('speed' => 'slow'), true);
$buffer = $this->Js->getBuffer();
$this->assertNull($result);
$this->assertEquals(1, count($buffer));
$this->assertEquals('I am not buffered.', $buffer[0]);
$result = $this->Js->effect('slideIn', array('speed' => 'slow', 'buffer' => true));
$buffer = $this->Js->getBuffer();
$this->assertNull($result);
$this->assertEquals(1, count($buffer));
$this->assertEquals('I am not buffered.', $buffer[0]);
}
/**
* test that writeScripts generates scripts inline.
*
* @return void
*/
public function testWriteScriptsNoFile() {
$this->_useMock();
$this->Js->buffer('one = 1;');
$this->Js->buffer('two = 2;');
$result = $this->Js->writeBuffer(array('onDomReady' => false, 'cache' => false, 'clear' => false));
$expected = array(
'script' => array('type' => 'text/javascript'),
$this->cDataStart,
"one = 1;\ntwo = 2;",
$this->cDataEnd,
'/script',
);
$this->assertTags($result, $expected);
$this->Js->TestJsEngine->expects($this->atLeastOnce())->method('domReady');
$result = $this->Js->writeBuffer(array('onDomReady' => true, 'cache' => false, 'clear' => false));
$this->View->expects($this->once())
->method('append')
->with('script', $this->matchesRegularExpression('/one\s\=\s1;\ntwo\s\=\s2;/'));
$result = $this->Js->writeBuffer(array('onDomReady' => false, 'inline' => false, 'cache' => false));
}
/**
* test that writing the buffer with inline = false includes a script tag.
*
* @return void
*/
public function testWriteBufferNotInline() {
$this->Js->set('foo', 1);
$this->View->expects($this->once())
->method('append')
->with('script', $this->matchesRegularExpression('#