* Copyright 2005-2007, Cake Software Foundation, Inc. * 1785 E. Sahara Avenue, Suite 490-204 * Las Vegas, Nevada 89104 * * Licensed under The Open Group Test Suite License * Redistributions of files must retain the above copyright notice. * * @filesource * @copyright Copyright 2005-2007, Cake Software Foundation, Inc. * @link https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests * @package cake.tests * @subpackage cake.tests.cases.libs * @since CakePHP(tm) v 1.2.0.4206 * @version $Revision$ * @modifiedby $LastChangedBy$ * @lastmodified $Date$ * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License */ uses('view' . DS . 'view', 'view' . DS . 'helper'); class HelperTestPost extends Model { var $useTable = false; function schema() { $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'), 'created' => array('type' => 'date', 'null' => true, 'default' => '', 'length' => ''), 'modified' => array('type' => 'datetime', 'null' => true, 'default' => '', 'length' => null) ); return $this->_schema; } var $hasAndBelongsToMany = array('HelperTestTag'=> array()); } class HelperTestComment extends Model { var $useTable = false; function schema() { $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; } } class HelperTestTag extends Model { var $useTable = false; function schema() { $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; } } class HelperTestPostsTag extends Model { var $useTable = false; function schema() { $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; } } /** * Short description for class. * * @package cake.tests * @subpackage cake.tests.cases.libs */ class HelperTest extends UnitTestCase { function setUp() { Router::reload(); $null = null; $this->View = new View($null); $this->Helper = new Helper(); ClassRegistry::addObject('HelperTestPost', new HelperTestPost()); ClassRegistry::addObject('HelperTestComment', new HelperTestComment()); ClassRegistry::addObject('HelperTestTag', new HelperTestTag()); } function testFormFieldNameParsing() { $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); } function tearDown() { unset($this->Helper, $this->View); ClassRegistry::flush(); } } ?>