Skip to content
Permalink
Browse files

Add fix and test for CamelBack input names.

Refs #1974
  • Loading branch information...
markstory committed Sep 8, 2011
1 parent 8880e0c commit fa8bdfd0ddaba47f9e787dc58dc72f9fe930365d
Showing with 29 additions and 1 deletion.
  1. +21 −0 lib/Cake/Test/Case/View/HelperTest.php
  2. +8 −1 lib/Cake/View/Helper.php
@@ -87,6 +87,7 @@ public function schema($field = false) {
'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 @@ public static function entityProvider() {
array(
'HelperTest.1.Comment.body',
array('HelperTest', '1', 'Comment', 'body')
),
array(
'HelperTestComment.BigField',
array('HelperTestComment', 'BigField')
)
);
}
@@ -299,6 +304,22 @@ public function testSetEntityAssociated() {
$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());
}
/**
@@ -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 @@ public function setEntity($entity, $setScope = false) {
// 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;
}

0 comments on commit fa8bdfd

Please sign in to comment.
You can’t perform that action at this time.