Add fix and test for CamelBack input names.

Refs #1974
This commit is contained in:
mark_story 2011-09-07 22:13:37 -04:00
parent 8880e0c668
commit fa8bdfd0dd
2 changed files with 29 additions and 1 deletions

View file

@ -87,6 +87,7 @@ class HelperTestComment extends Model {
'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' => ''),
'BigField' => array('type' => 'string', 'null' => true, 'default' => '', 'length' => ''),
'created' => array('type' => 'date', 'null' => true, 'default' => '', 'length' => ''),
'modified' => array('type' => 'datetime', 'null' => true, 'default' => '', 'length' => null)
);
@ -228,6 +229,10 @@ class HelperTest extends CakeTestCase {
array(
'HelperTest.1.Comment.body',
array('HelperTest', '1', 'Comment', 'body')
),
array(
'HelperTestComment.BigField',
array('HelperTestComment', 'BigField')
)
);
}
@ -299,6 +304,22 @@ class HelperTest extends CakeTestCase {
$this->assertEquals($expected, $this->Helper->entity());
$this->assertEquals('HelperTestComment', $this->Helper->model());
}
/**
* Test that setEntity doesn't make CamelCase fields that are not associations an
* associated model.
*
* @return void
*/
public function testSetEntityAssociatedCamelCaseField() {
$this->Helper->fieldset = array('HelperTestComment' => array('fields' => array('BigField' => 'something')));
$this->Helper->setEntity('HelperTestComment', true);
$this->Helper->setEntity('HelperTestComment.BigField');
$this->assertEquals('HelperTestComment', $this->Helper->model());
$this->assertEquals('BigField', $this->Helper->field());
}
/**

View file

@ -64,6 +64,13 @@ class Helper extends Object {
*/
public $plugin = null;
/**
* Fields this helper is using.
*
* @var array
*/
public $fieldset = array();
/**
* Holds tag templates.
*
@ -449,7 +456,7 @@ class Helper extends Object {
// check for associated model.
$reversed = array_reverse($parts);
foreach ($reversed as $part) {
if (preg_match('/^[A-Z]/', $part)) {
if (empty($this->fieldset[$this->_modelScope]['fields'][$part]) && preg_match('/^[A-Z]/', $part)) {
$this->_association = $part;
break;
}