Skip to content

Commit

Permalink
Fixing more strict errors and usage errors in BehaviorCollection test.
Browse files Browse the repository at this point in the history
Making modParams only work if the result is an array.  This is for compatibility with previous behaviour.
  • Loading branch information
markstory committed Dec 12, 2010
1 parent ce2e605 commit bf22af6
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 38 deletions.
7 changes: 3 additions & 4 deletions cake/libs/object_collection.php
Expand Up @@ -107,18 +107,17 @@ public function trigger($callback, $params = array(), $options = array()) {
if ($options['modParams'] !== false && !isset($params[$options['modParams']])) {
throw new CakeException(__('Cannot use modParams with indexes that do not exist.'));
}

foreach ($list as $name) {
$result = call_user_func_array(array($this->_loaded[$name], $callback), $params);
if ($options['collectReturn'] === true) {
$collected[] = $result;
}
if (
$options['break'] && ($result === $options['breakOn'] ||
$options['break'] && ($result === $options['breakOn'] ||
(is_array($options['breakOn']) && in_array($result, $options['breakOn'], true)))
) {
break;
} elseif ($options['modParams'] !== false && $result !== null) {
return $result;
} elseif ($options['modParams'] !== false && is_array($result)) {
$params[$options['modParams']] = $result;
}
}
Expand Down
59 changes: 26 additions & 33 deletions cake/tests/cases/libs/model/behavior_collection.test.php
Expand Up @@ -46,7 +46,7 @@ class TestBehavior extends ModelBehavior {
* @access public
* @return void
*/
function setup(&$model, $config = array()) {
function setup($model, $config = array()) {
parent::setup($model, $config);
if (isset($config['mangle'])) {
$config['mangle'] .= ' mangled';
Expand All @@ -62,7 +62,7 @@ function setup(&$model, $config = array()) {
* @access public
* @return void
*/
function beforeFind(&$model, $query) {
function beforeFind($model, $query) {
$settings = $this->settings[$model->alias];
if (!isset($settings['beforeFind']) || $settings['beforeFind'] == 'off') {
return parent::beforeFind($model, $query);
Expand Down Expand Up @@ -91,7 +91,7 @@ function beforeFind(&$model, $query) {
* @access public
* @return void
*/
function afterFind(&$model, $results, $primary) {
function afterFind($model, $results, $primary) {
$settings = $this->settings[$model->alias];
if (!isset($settings['afterFind']) || $settings['afterFind'] == 'off') {
return parent::afterFind($model, $results, $primary);
Expand Down Expand Up @@ -119,7 +119,7 @@ function afterFind(&$model, $results, $primary) {
* @access public
* @return void
*/
function beforeSave(&$model) {
function beforeSave($model) {
$settings = $this->settings[$model->alias];
if (!isset($settings['beforeSave']) || $settings['beforeSave'] == 'off') {
return parent::beforeSave($model);
Expand All @@ -129,7 +129,7 @@ function beforeSave(&$model) {
return false;
break;
case 'test':
return null;
return true;
break;
case 'modify':
$model->data[$model->alias]['name'] .= ' modified before';
Expand All @@ -146,7 +146,7 @@ function beforeSave(&$model) {
* @access public
* @return void
*/
function afterSave(&$model, $created) {
function afterSave($model, $created) {
$settings = $this->settings[$model->alias];
if (!isset($settings['afterSave']) || $settings['afterSave'] == 'off') {
return parent::afterSave($model, $created);
Expand Down Expand Up @@ -178,7 +178,7 @@ function afterSave(&$model, $created) {
* @access public
* @return void
*/
function beforeValidate(&$model) {
function beforeValidate($model) {
$settings = $this->settings[$model->alias];
if (!isset($settings['validate']) || $settings['validate'] == 'off') {
return parent::beforeValidate($model);
Expand Down Expand Up @@ -210,7 +210,7 @@ function beforeValidate(&$model) {
* @access public
* @return void
*/
function beforeDelete(&$model, $cascade = true) {
function beforeDelete($model, $cascade = true) {
$settings = $this->settings[$model->alias];
if (!isset($settings['beforeDelete']) || $settings['beforeDelete'] == 'off') {
return parent::beforeDelete($model, $cascade);
Expand All @@ -227,6 +227,7 @@ function beforeDelete(&$model, $cascade = true) {
if ($cascade) {
echo ' (cascading) ';
}
return true;
break;
}
}
Expand All @@ -238,7 +239,7 @@ function beforeDelete(&$model, $cascade = true) {
* @access public
* @return void
*/
function afterDelete(&$model) {
function afterDelete($model) {
$settings = $this->settings[$model->alias];
if (!isset($settings['afterDelete']) || $settings['afterDelete'] == 'off') {
return parent::afterDelete($model);
Expand All @@ -257,10 +258,10 @@ function afterDelete(&$model) {
* @access public
* @return void
*/
function onError(&$model) {
function onError($model, $error) {
$settings = $this->settings[$model->alias];
if (!isset($settings['onError']) || $settings['onError'] == 'off') {
return parent::onError($model, $cascade);
return parent::onError($model, $error);
}
echo "onError trigger success";
}
Expand All @@ -271,7 +272,7 @@ function onError(&$model) {
* @access public
* @return void
*/
function beforeTest(&$model) {
function beforeTest($model) {
if (!isset($model->beforeTestResult)) {
$model->beforeTestResult = array();
}
Expand Down Expand Up @@ -361,7 +362,7 @@ class Test3Behavior extends TestBehavior{
* @subpackage cake.tests.cases.libs.model
*/
class Test4Behavior extends ModelBehavior{
function setup(&$model, $config = null) {
function setup($model, $config = null) {
$model->bindModel(
array('hasMany' => array('Comment'))
);
Expand All @@ -375,7 +376,7 @@ function setup(&$model, $config = null) {
* @subpackage cake.tests.cases.libs.model
*/
class Test5Behavior extends ModelBehavior{
function setup(&$model, $config = null) {
function setup($model, $config = null) {
$model->bindModel(
array('belongsTo' => array('User'))
);
Expand All @@ -389,7 +390,7 @@ function setup(&$model, $config = null) {
* @subpackage cake.tests.cases.libs.model
*/
class Test6Behavior extends ModelBehavior{
function setup(&$model, $config = null) {
function setup($model, $config = null) {
$model->bindModel(
array('hasAndBelongsToMany' => array('Tag'))
);
Expand All @@ -403,7 +404,7 @@ function setup(&$model, $config = null) {
* @subpackage cake.tests.cases.libs.model
*/
class Test7Behavior extends ModelBehavior{
function setup(&$model, $config = null) {
function setup($model, $config = null) {
$model->bindModel(
array('hasOne' => array('Attachment'))
);
Expand All @@ -429,16 +430,6 @@ class BehaviorCollectionTest extends CakeTestCase {
'core.attachment', 'core.tag', 'core.articles_tag'
);

/**
* tearDown method
*
* @access public
* @return void
*/
function endTest() {
ClassRegistry::flush();
}

/**
* testBehaviorBinding method
*
Expand Down Expand Up @@ -937,7 +928,8 @@ function testBehaviorDeleteCallbacks() {
$this->assertIdentical(trim(ob_get_clean()), 'afterDelete success');
$this->assertIdentical($results, true);
}
/**

/**
* testBehaviorOnErrorCallback method
*
* @access public
Expand All @@ -948,10 +940,11 @@ function testBehaviorOnErrorCallback() {

$Apple->Behaviors->attach('Test', array('beforeFind' => 'off', 'onError' => 'on'));
ob_start();
$Apple->Behaviors->Test->onError($Apple);
$Apple->Behaviors->Test->onError($Apple, '');
$this->assertIdentical(trim(ob_get_clean()), 'onError trigger success');
}
/**

/**
* testBehaviorValidateCallback method
*
* @access public
Expand Down Expand Up @@ -1055,17 +1048,17 @@ function testBehaviorTrigger() {
$Apple->Behaviors->attach('Test3');

$Apple->beforeTestResult = array();
$Apple->Behaviors->trigger($Apple, 'beforeTest');
$Apple->Behaviors->trigger('beforeTest', array(&$Apple));
$expected = array('testbehavior', 'test2behavior', 'test3behavior');
$this->assertIdentical($Apple->beforeTestResult, $expected);

$Apple->beforeTestResult = array();
$Apple->Behaviors->trigger($Apple, 'beforeTest', array(), array('break' => true, 'breakOn' => 'test2behavior'));
$Apple->Behaviors->trigger('beforeTest', array(&$Apple), array('break' => true, 'breakOn' => 'test2behavior'));
$expected = array('testbehavior', 'test2behavior');
$this->assertIdentical($Apple->beforeTestResult, $expected);

$Apple->beforeTestResult = array();
$Apple->Behaviors->trigger($Apple, 'beforeTest', array(), array('break' => true, 'breakOn' => array('test2behavior', 'test3behavior')));
$Apple->Behaviors->trigger('beforeTest', array($Apple), array('break' => true, 'breakOn' => array('test2behavior', 'test3behavior')));
$expected = array('testbehavior', 'test2behavior');
$this->assertIdentical($Apple->beforeTestResult, $expected);
}
Expand Down Expand Up @@ -1130,6 +1123,6 @@ function testBehaviorAttachAndDetach() {
$Sample->Behaviors->attach('Test2');
$Sample->Behaviors->detach('Test3');

$Sample->Behaviors->trigger($Sample, 'beforeTest');
$Sample->Behaviors->trigger('beforeTest', array(&$Sample));
}
}
2 changes: 1 addition & 1 deletion cake/tests/cases/libs/object_collection.test.php
Expand Up @@ -334,7 +334,7 @@ function testTriggerModParamsNullIgnored() {
$this->Objects->TriggerMockSecond->expects($this->once())
->method('callback')
->with(array('value'))
->will($this->returnValue('new value'));
->will($this->returnValue(array('new value')));

$result = $this->Objects->trigger(
'callback',
Expand Down

0 comments on commit bf22af6

Please sign in to comment.