| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839 |
- <?php
- /**
- * HelperTest file
- *
- * PHP 5
- *
- * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
- * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
- *
- * Licensed under The MIT License
- * Redistributions of files must retain the above copyright notice
- *
- * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
- * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
- * @package cake.tests.cases.libs
- * @since CakePHP(tm) v 1.2.0.4206
- * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
- */
- App::uses('View', 'View');
- App::uses('Helper', 'View');
- App::uses('Model', 'Model');
- App::uses('Router', 'Routing');
- /**
- * HelperTestPost class
- *
- * @package cake.tests.cases.libs.view
- */
- class HelperTestPost extends Model {
- /**
- * useTable property
- *
- * @var bool false
- * @access public
- */
- public $useTable = false;
- /**
- * schema method
- *
- * @access public
- * @return void
- */
- function schema($field = false) {
- $this->_schema = array(
- 'id' => array('type' => 'integer', 'null' => false, 'default' => '', 'length' => '8'),
- 'title' => array('type' => 'string', 'null' => false, 'default' => '', 'length' => '255'),
- 'body' => array('type' => 'string', 'null' => true, 'default' => '', 'length' => ''),
- 'number' => array('type' => 'integer', 'null' => false, 'default' => '', 'length' => '8'),
- 'date' => array('type' => 'date', 'null' => true, 'default' => '', 'length' => ''),
- 'created' => array('type' => 'date', 'null' => true, 'default' => '', 'length' => ''),
- 'modified' => array('type' => 'datetime', 'null' => true, 'default' => '', 'length' => null)
- );
- return $this->_schema;
- }
- /**
- * hasAndBelongsToMany property
- *
- * @var array
- * @access public
- */
- public $hasAndBelongsToMany = array('HelperTestTag'=> array('with' => 'HelperTestPostsTag'));
- }
- /**
- * HelperTestComment class
- *
- * @package cake.tests.cases.libs.view
- */
- class HelperTestComment extends Model {
- /**
- * useTable property
- *
- * @var bool false
- * @access public
- */
- public $useTable = false;
- /**
- * schema method
- *
- * @access public
- * @return void
- */
- function schema($field = false) {
- $this->_schema = array(
- 'id' => array('type' => 'integer', 'null' => false, 'default' => '', 'length' => '8'),
- 'author_id' => array('type' => 'integer', 'null' => false, 'default' => '', 'length' => '8'),
- 'title' => array('type' => 'string', 'null' => false, 'default' => '', 'length' => '255'),
- 'body' => array('type' => 'string', 'null' => true, 'default' => '', 'length' => ''),
- 'created' => array('type' => 'date', 'null' => true, 'default' => '', 'length' => ''),
- 'modified' => array('type' => 'datetime', 'null' => true, 'default' => '', 'length' => null)
- );
- return $this->_schema;
- }
- }
- /**
- * HelperTestTag class
- *
- * @package cake.tests.cases.libs.view
- */
- class HelperTestTag extends Model {
- /**
- * useTable property
- *
- * @var bool false
- * @access public
- */
- public $useTable = false;
- /**
- * schema method
- *
- * @access public
- * @return void
- */
- function schema($field = false) {
- $this->_schema = array(
- 'id' => array('type' => 'integer', 'null' => false, 'default' => '', 'length' => '8'),
- 'name' => array('type' => 'string', 'null' => false, 'default' => '', 'length' => '255'),
- 'created' => array('type' => 'date', 'null' => true, 'default' => '', 'length' => ''),
- 'modified' => array('type' => 'datetime', 'null' => true, 'default' => '', 'length' => null)
- );
- return $this->_schema;
- }
- }
- /**
- * HelperTestPostsTag class
- *
- * @package cake.tests.cases.libs.view
- */
- class HelperTestPostsTag extends Model {
- /**
- * useTable property
- *
- * @var bool false
- * @access public
- */
- public $useTable = false;
- /**
- * schema method
- *
- * @access public
- * @return void
- */
- function schema($field = false) {
- $this->_schema = array(
- 'helper_test_post_id' => array('type' => 'integer', 'null' => false, 'default' => '', 'length' => '8'),
- 'helper_test_tag_id' => array('type' => 'integer', 'null' => false, 'default' => '', 'length' => '8'),
- );
- return $this->_schema;
- }
- }
- class TestHelper extends Helper {
- /**
- * helpers for this helper.
- *
- * @var string
- */
- var $helpers = array('Html', 'TestPlugin.OtherHelper');
- /**
- * expose a method as public
- *
- * @param string $options
- * @param string $exclude
- * @param string $insertBefore
- * @param string $insertAfter
- * @return void
- */
- function parseAttributes($options, $exclude = null, $insertBefore = ' ', $insertAfter = null) {
- return $this->_parseAttributes($options, $exclude, $insertBefore, $insertAfter);
- }
- }
- /**
- * HelperTest class
- *
- * @package cake.tests.cases.libs.view
- */
- class HelperTest extends CakeTestCase {
- /**
- * setUp method
- *
- * @access public
- * @return void
- */
- function setUp() {
- ClassRegistry::flush();
- Router::reload();
- $null = null;
- $this->View = new View($null);
- $this->Helper = new Helper($this->View);
- $this->Helper->request = new CakeRequest(null, false);
- ClassRegistry::addObject('HelperTestPost', new HelperTestPost());
- ClassRegistry::addObject('HelperTestComment', new HelperTestComment());
- ClassRegistry::addObject('HelperTestTag', new HelperTestTag());
- }
- /**
- * tearDown method
- *
- * @access public
- * @return void
- */
- function tearDown() {
- CakePlugin::unload();
- unset($this->Helper, $this->View);
- ClassRegistry::flush();
- }
- /**
- * testFormFieldNameParsing method
- *
- * @access public
- * @return void
- */
- function testSetEntity() {
- // PHP4 reference hack
- ClassRegistry::removeObject('view');
- ClassRegistry::addObject('view', $this->View);
- $this->Helper->setEntity('HelperTestPost.id');
- $this->assertFalse($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->Helper->setEntity('HelperTestComment.body');
- $this->assertFalse($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestComment');
- $this->assertEqual($this->View->field, 'body');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('HelperTestPost', true);
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, null);
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('_Token.fields');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'fields');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, '_Token');
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('id');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('HelperTestComment.body');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'body');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, 'HelperTestComment');
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('body');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'body');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('Something.else');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'else');
- $this->assertEqual($this->View->modelId, false);
- $this->assertEqual($this->View->association, 'Something');
- $this->assertEqual($this->View->fieldSuffix, '');
- $this->Helper->setEntity('5.id');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, '5');
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->assertEqual($this->View->entity(), array('HelperTestPost', 5, 'id'));
- $this->Helper->setEntity('0.id');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, '0');
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->assertEqual($this->View->entity(), array('HelperTestPost', 0, 'id'));
- $this->Helper->setEntity('5.created.month');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'created');
- $this->assertEqual($this->View->modelId, '5');
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, 'month');
- $this->Helper->setEntity('HelperTestComment.5.id');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, '5');
- $this->assertEqual($this->View->association, 'HelperTestComment');
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('HelperTestComment.id.time');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, 'HelperTestComment');
- $this->assertEqual($this->View->fieldSuffix, 'time');
- $this->Helper->setEntity('HelperTestTag');
- $this->assertTrue($this->View->modelScope);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'HelperTestTag');
- $this->assertEqual($this->View->modelId, '');
- $this->assertEqual($this->View->association, 'HelperTestTag');
- $this->assertEqual($this->View->fieldSuffix, '');
- $this->Helper->setEntity(null);
- $this->Helper->setEntity('ModelThatDoesntExist.field_that_doesnt_exist');
- $this->assertFalse($this->View->modelScope);
- $this->assertEqual($this->View->model, 'ModelThatDoesntExist');
- $this->assertEqual($this->View->field, 'field_that_doesnt_exist');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- }
- /**
- * test that 'view' doesn't break things.
- *
- * @return void
- */
- function testSetEntityWithView() {
- $this->assertNull($this->Helper->setEntity('Allow.view.group_id'));
- $this->assertNull($this->Helper->setEntity('Allow.view'));
- $this->assertNull($this->Helper->setEntity('View.view'));
- }
- /**
- * test getting values from Helper
- *
- * @return void
- */
- function testValue() {
- $this->Helper->request->data = array('fullname' => 'This is me');
- $this->Helper->setEntity('fullname');
- $result = $this->Helper->value('fullname');
- $this->assertEqual($result, 'This is me');
- $this->Helper->request->data = array('Post' => array('name' => 'First Post'));
- $this->Helper->setEntity('Post.name');
- $result = $this->Helper->value('Post.name');
- $this->assertEqual($result, 'First Post');
- $this->Helper->request->data = array('Post' => array(2 => array('name' => 'First Post')));
- $this->Helper->setEntity('Post.2.name');
- $result = $this->Helper->value('Post.2.name');
- $this->assertEqual($result, 'First Post');
- $this->Helper->request->data = array('Post' => array(2 => array('created' => array('year' => '2008'))));
- $this->Helper->setEntity('Post.2.created');
- $result = $this->Helper->value('Post.2.created');
- $this->assertEqual($result, array('year' => '2008'));
- $this->Helper->request->data = array('Post' => array(2 => array('created' => array('year' => '2008'))));
- $this->Helper->setEntity('Post.2.created.year');
- $result = $this->Helper->value('Post.2.created.year');
- $this->assertEqual($result, '2008');
- $this->Helper->request->data = array('HelperTestTag' => array('HelperTestTag' => ''));
- $this->Helper->setEntity('HelperTestTag.HelperTestTag');
- $result = $this->Helper->value('HelperTestTag.HelperTestTag');
- $this->assertEqual($result, '');
- $this->Helper->request->data = array('HelperTestTag' => array('HelperTestTag' => array(2, 3, 4)));
- $this->Helper->setEntity('HelperTestTag.HelperTestTag');
- $result = $this->Helper->value('HelperTestTag.HelperTestTag');
- $this->assertEqual($result, array(2, 3, 4));
- $this->Helper->request->data = array(
- 'HelperTestTag' => array(
- array('id' => 3),
- array('id' => 5)
- )
- );
- $this->Helper->setEntity('HelperTestTag.HelperTestTag');
- $result = $this->Helper->value('HelperTestTag.HelperTestTag');
- $this->assertEqual($result, array(3 => 3, 5 => 5));
- $this->Helper->request->data = array('zero' => 0);
- $this->Helper->setEntity('zero');
- $result = $this->Helper->value(array('default' => 'something'), 'zero');
- $this->assertEqual($result, array('value' => 0));
- $this->Helper->request->data = array('zero' => '0');
- $result = $this->Helper->value(array('default' => 'something'), 'zero');
- $this->assertEqual($result, array('value' => '0'));
- $this->Helper->setEntity('inexistent');
- $result = $this->Helper->value(array('default' => 'something'), 'inexistent');
- $this->assertEqual($result, array('value' => 'something'));
- }
- /**
- * Ensure HTML escaping of url params. So link addresses are valid and not exploited
- *
- * @return void
- */
- function testUrlConversion() {
- $result = $this->Helper->url('/controller/action/1');
- $this->assertEqual($result, '/controller/action/1');
- $result = $this->Helper->url('/controller/action/1?one=1&two=2');
- $this->assertEqual($result, '/controller/action/1?one=1&two=2');
- $result = $this->Helper->url(array('controller' => 'posts', 'action' => 'index', 'page' => '1" onclick="alert(\'XSS\');"'));
- $this->assertEqual($result, "/posts/index/page:1" onclick="alert('XSS');"");
- $result = $this->Helper->url('/controller/action/1/param:this+one+more');
- $this->assertEqual($result, '/controller/action/1/param:this+one+more');
- $result = $this->Helper->url('/controller/action/1/param:this%20one%20more');
- $this->assertEqual($result, '/controller/action/1/param:this%20one%20more');
- $result = $this->Helper->url('/controller/action/1/param:%7Baround%20here%7D%5Bthings%5D%5Bare%5D%24%24');
- $this->assertEqual($result, '/controller/action/1/param:%7Baround%20here%7D%5Bthings%5D%5Bare%5D%24%24');
- $result = $this->Helper->url(array(
- 'controller' => 'posts', 'action' => 'index', 'param' => '%7Baround%20here%7D%5Bthings%5D%5Bare%5D%24%24'
- ));
- $this->assertEqual($result, "/posts/index/param:%7Baround%20here%7D%5Bthings%5D%5Bare%5D%24%24");
- $result = $this->Helper->url(array(
- 'controller' => 'posts', 'action' => 'index', 'page' => '1',
- '?' => array('one' => 'value', 'two' => 'value', 'three' => 'purple')
- ));
- $this->assertEqual($result, "/posts/index/page:1?one=value&two=value&three=purple");
- }
- /**
- * test assetTimestamp application
- *
- * @return void
- */
- function testAssetTimestamp() {
- $_timestamp = Configure::read('Asset.timestamp');
- $_debug = Configure::read('debug');
- Configure::write('Asset.timestamp', false);
- $result = $this->Helper->assetTimestamp(CSS_URL . 'cake.generic.css');
- $this->assertEqual($result, CSS_URL . 'cake.generic.css');
- Configure::write('Asset.timestamp', true);
- Configure::write('debug', 0);
- $result = $this->Helper->assetTimestamp(CSS_URL . 'cake.generic.css');
- $this->assertEqual($result, CSS_URL . 'cake.generic.css');
- Configure::write('Asset.timestamp', true);
- Configure::write('debug', 2);
- $result = $this->Helper->assetTimestamp(CSS_URL . 'cake.generic.css');
- $this->assertPattern('/' . preg_quote(CSS_URL . 'cake.generic.css?', '/') . '[0-9]+/', $result);
- Configure::write('Asset.timestamp', 'force');
- Configure::write('debug', 0);
- $result = $this->Helper->assetTimestamp(CSS_URL . 'cake.generic.css');
- $this->assertPattern('/' . preg_quote(CSS_URL . 'cake.generic.css?', '/') . '[0-9]+/', $result);
- $result = $this->Helper->assetTimestamp(CSS_URL . 'cake.generic.css?someparam');
- $this->assertEqual($result, CSS_URL . 'cake.generic.css?someparam');
- $this->Helper->request->webroot = '/some/dir/';
- $result = $this->Helper->assetTimestamp('/some/dir/' . CSS_URL . 'cake.generic.css');
- $this->assertPattern('/' . preg_quote(CSS_URL . 'cake.generic.css?', '/') . '[0-9]+/', $result);
- Configure::write('debug', $_debug);
- Configure::write('Asset.timestamp', $_timestamp);
- }
- /**
- * test assetTimestamp with plugins and themes
- *
- * @return void
- */
- function testAssetTimestampPluginsAndThemes() {
- $_timestamp = Configure::read('Asset.timestamp');
- Configure::write('Asset.timestamp', 'force');
- App::build(array(
- 'plugins' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS),
- 'View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS),
- ));
- CakePlugin::loadAll();
- $result = $this->Helper->assetTimestamp('/test_plugin/css/test_plugin_asset.css');
- $this->assertPattern('#/test_plugin/css/test_plugin_asset.css\?[0-9]+$#', $result, 'Missing timestamp plugin');
- $this->setExpectedException('PHPUnit_Framework_Error_Warning');
- $result = $this->Helper->assetTimestamp('/test_plugin/css/i_dont_exist.css');
- $this->assertPattern('#/test_plugin/css/i_dont_exist.css\?$#', $result, 'No error on missing file');
- $result = $this->Helper->assetTimestamp('/theme/test_theme/js/theme.js');
- $this->assertPattern('#/theme/test_theme/js/theme.js\?[0-9]+$#', $result, 'Missing timestamp theme');
- $result = $this->Helper->assetTimestamp('/theme/test_theme/js/non_existant.js');
- $this->assertPattern('#/theme/test_theme/js/non_existant.js\?$#', $result, 'No error on missing file');
- App::build();
- Configure::write('Asset.timestamp', $_timestamp);
- }
- /**
- * testFieldsWithSameName method
- *
- * @access public
- * @return void
- */
- function testFieldsWithSameName() {
- // PHP4 reference hack
- ClassRegistry::removeObject('view');
- ClassRegistry::addObject('view', $this->View);
- $this->Helper->setEntity('HelperTestTag', true);
- $this->Helper->setEntity('HelperTestTag.id');
- $this->assertEqual($this->View->model, 'HelperTestTag');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('My.id');
- $this->assertEqual($this->View->model, 'HelperTestTag');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, 'My');
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('MyOther.id');
- $this->assertEqual($this->View->model, 'HelperTestTag');
- $this->assertEqual($this->View->field, 'id');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, 'MyOther');
- $this->assertEqual($this->View->fieldSuffix, null);
- }
- /**
- * testFieldSameAsModel method
- *
- * @access public
- * @return void
- */
- function testFieldSameAsModel() {
- // PHP4 reference hack
- ClassRegistry::removeObject('view');
- ClassRegistry::addObject('view', $this->View);
- $this->Helper->setEntity('HelperTestTag', true);
- $this->Helper->setEntity('helper_test_post');
- $this->assertEqual($this->View->model, 'HelperTestTag');
- $this->assertEqual($this->View->field, 'helper_test_post');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('HelperTestTag');
- $this->assertEqual($this->View->model, 'HelperTestTag');
- $this->assertEqual($this->View->field, 'HelperTestTag');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->assertEqual($this->View->entityPath, 'HelperTestTag');
- }
- /**
- * testFieldSuffixForDate method
- *
- * @access public
- * @return void
- */
- function testFieldSuffixForDate() {
- // PHP4 reference hack
- ClassRegistry::removeObject('view');
- ClassRegistry::addObject('view', $this->View);
- $this->Helper->setEntity('HelperTestPost', true);
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, null);
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, null);
- $this->Helper->setEntity('date.month');
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->field, 'date');
- $this->assertEqual($this->View->modelId, null);
- $this->assertEqual($this->View->association, null);
- $this->assertEqual($this->View->fieldSuffix, 'month');
- }
- /**
- * testMulitDimensionValue method
- *
- * @access public
- * @return void
- */
- function testMulitDimensionValue() {
- $this->Helper->data = array();
- for ($i = 0; $i < 2; $i++) {
- $this->Helper->request->data['Model'][$i] = 'what';
- $result[] = $this->Helper->value("Model.{$i}");
- $this->Helper->request->data['Model'][$i] = array();
- for ($j = 0; $j < 2; $j++) {
- $this->Helper->request->data['Model'][$i][$j] = 'how';
- $result[] = $this->Helper->value("Model.{$i}.{$j}");
- }
- }
- $expected = array('what', 'how', 'how', 'what', 'how', 'how');
- $this->assertEqual($expected, $result);
- $this->Helper->request->data['HelperTestComment']['5']['id'] = 'ok';
- $result = $this->Helper->value('HelperTestComment.5.id');
- $this->assertEqual($result, 'ok');
- $this->Helper->setEntity('HelperTestPost', true);
- $this->Helper->request->data['HelperTestPost']['5']['created']['month'] = '10';
- $result = $this->Helper->value('5.created.month');
- $this->assertEqual($result, 10);
- $this->Helper->request->data['HelperTestPost']['0']['id'] = 100;
- $result = $this->Helper->value('0.id');
- $this->assertEqual($result, 100);
- }
- /**
- * testClean method
- *
- * @access public
- * @return void
- */
- function testClean() {
- $result = $this->Helper->clean(array());
- $this->assertEqual($result, null);
- $result = $this->Helper->clean(array('<script>with something</script>', '<applet>something else</applet>'));
- $this->assertEqual($result, array('with something', 'something else'));
- $result = $this->Helper->clean('<script>with something</script>');
- $this->assertEqual($result, 'with something');
- $result = $this->Helper->clean('<script type="text/javascript">alert("ruined");</script>');
- $this->assertNoPattern('#</*script#', $result);
- $result = $this->Helper->clean("<script \ntype=\"text/javascript\">\n\talert('ruined');\n\n\t\t</script>");
- $this->assertNoPattern('#</*script#', $result);
- $result = $this->Helper->clean('<body/onload=do(/something/)>');
- $this->assertEqual($result, '<body/>');
- $result = $this->Helper->clean('<script>alert(document.cookie)</script>');
- $this->assertEqual($result, '&lt;script&gt;alert(document.cookie)&lt;/script&gt;');
- }
- /**
- * testMultiDimensionalField method
- *
- * @access public
- * @return void
- */
- function testMultiDimensionalField() {
- // PHP4 reference hack
- ClassRegistry::removeObject('view');
- ClassRegistry::addObject('view', $this->View);
- $this->Helper->setEntity('HelperTestPost', true);
- $this->Helper->setEntity('HelperTestPost.2.HelperTestComment.1.title');
- $this->assertEqual($this->View->model, 'HelperTestPost');
- $this->assertEqual($this->View->association, 'HelperTestComment');
- $this->assertEqual($this->View->modelId,2);
- $this->assertEqual($this->View->field, 'title');
- $this->Helper->setEntity('HelperTestPost.1.HelperTestComment.1.HelperTestTag.1.created');
- $this->assertEqual($this->View->field,'created');
- $this->assertEqual($this->View->association,'HelperTestTag');
- $this->assertEqual($this->View->modelId,1);
- $this->Helper->setEntity('HelperTestPost.0.HelperTestComment.1.HelperTestTag.1.fake');
- $this->assertEqual($this->View->model,'HelperTestPost');
- $this->assertEqual($this->View->association,'HelperTestTag');
- $this->assertEqual($this->View->field,null);
- $this->Helper->setEntity('1.HelperTestComment.1.HelperTestTag.created.year');
- $this->assertEqual($this->View->model,'HelperTestPost');
- $this->assertEqual($this->View->association,'HelperTestTag');
- $this->assertEqual($this->View->field,'created');
- $this->assertEqual($this->View->modelId,1);
- $this->assertEqual($this->View->fieldSuffix,'year');
- $this->Helper->request->data['HelperTestPost'][2]['HelperTestComment'][1]['title'] = 'My Title';
- $result = $this->Helper->value('HelperTestPost.2.HelperTestComment.1.title');
- $this->assertEqual($result,'My Title');
- $this->Helper->request->data['HelperTestPost'][2]['HelperTestComment'][1]['created']['year'] = 2008;
- $result = $this->Helper->value('HelperTestPost.2.HelperTestComment.1.created.year');
- $this->assertEqual($result,2008);
- $this->Helper->request->data[2]['HelperTestComment'][1]['created']['year'] = 2008;
- $result = $this->Helper->value('HelperTestPost.2.HelperTestComment.1.created.year');
- $this->assertEqual($result,2008);
- $this->Helper->request->data['HelperTestPost']['title'] = 'My Title';
- $result = $this->Helper->value('title');
- $this->assertEqual($result,'My Title');
- $this->Helper->request->data['My']['title'] = 'My Title';
- $result = $this->Helper->value('My.title');
- $this->assertEqual($result,'My Title');
- }
- function testWebrootPaths() {
- $this->Helper->request->webroot = '/';
- $result = $this->Helper->webroot('/img/cake.power.gif');
- $expected = '/img/cake.power.gif';
- $this->assertEqual($expected, $result);
- $this->Helper->theme = 'test_theme';
- App::build(array(
- 'View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View'. DS)
- ));
- $result = $this->Helper->webroot('/img/cake.power.gif');
- $expected = '/theme/test_theme/img/cake.power.gif';
- $this->assertEqual($expected, $result);
- $result = $this->Helper->webroot('/img/test.jpg');
- $expected = '/theme/test_theme/img/test.jpg';
- $this->assertEqual($expected, $result);
- $webRoot = Configure::read('App.www_root');
- Configure::write('App.www_root', CAKE . 'Test' . DS . 'test_app' . DS . 'webroot' . DS);
- $result = $this->Helper->webroot('/img/cake.power.gif');
- $expected = '/theme/test_theme/img/cake.power.gif';
- $this->assertEqual($expected, $result);
- $result = $this->Helper->webroot('/img/test.jpg');
- $expected = '/theme/test_theme/img/test.jpg';
- $this->assertEqual($expected, $result);
- $result = $this->Helper->webroot('/img/cake.icon.gif');
- $expected = '/img/cake.icon.gif';
- $this->assertEqual($expected, $result);
- $result = $this->Helper->webroot('/img/cake.icon.gif?some=param');
- $expected = '/img/cake.icon.gif?some=param';
- $this->assertEqual($expected, $result);
- Configure::write('App.www_root', $webRoot);
- }
- /**
- * test lazy loading helpers is seamless
- *
- * @return void
- */
- function testLazyLoadingHelpers() {
- App::build(array(
- 'plugins' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS),
- ));
- CakePlugin::loadAll();
- $Helper = new TestHelper($this->View);
- $this->assertInstanceOf('OtherHelperHelper', $Helper->OtherHelper);
- $this->assertInstanceOf('HtmlHelper', $Helper->Html);
- App::build();
- }
- /**
- * test that a helpers Helper is not 'attached' to the collection
- *
- * @return void
- */
- function testThatHelperHelpersAreNotAttached() {
- $Helper = new TestHelper($this->View);
- $Helper->OtherHelper;
- $result = $this->View->Helpers->enabled();
- $expected = array();
- $this->assertEquals($expected, $result, 'Helper helpers were attached to the collection.');
- }
- /**
- * test that the lazy loader doesn't duplicate objects on each access.
- *
- * @return void
- */
- function testLazyLoadingUsesReferences() {
- $Helper = new TestHelper($this->View);
- $result1 = $Helper->Html;
- $result2 = $Helper->Html;
- $result1->testprop = 1;
- $this->assertEquals($result1->testprop, $result2->testprop);
- }
- }
|