comp mod for saveAll()

better approach

test case to assert saveAll still behaves like previous versions
This commit is contained in:
euromark 2012-10-11 14:03:59 +02:00
parent 2e15689d19
commit 1e2ac0b9c8
2 changed files with 28 additions and 2 deletions

View file

@ -2017,7 +2017,7 @@ class Model extends Object implements CakeEventListener {
* @link http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array * @link http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array
* @link http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveall-array-data-null-array-options-array * @link http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveall-array-data-null-array-options-array
*/ */
public function saveAll($data, $options = array()) { public function saveAll($data = array(), $options = array()) {
$options = array_merge(array('validate' => 'first'), $options); $options = array_merge(array('validate' => 'first'), $options);
if (Hash::numeric(array_keys($data))) { if (Hash::numeric(array_keys($data))) {
if ($options['validate'] === 'only') { if ($options['validate'] === 'only') {

View file

@ -4725,6 +4725,32 @@ class ModelWriteTest extends BaseModelTest {
$this->assertEquals($expected, $TestModel->Comment->validationErrors); $this->assertEquals($expected, $TestModel->Comment->validationErrors);
} }
/**
* test that saveAll still behaves like previous versions (does not necessarily need a first argument)
*
* @return void
*/
public function testSaveAllWithSet() {
$this->loadFixtures('Article', 'Tag', 'Comment', 'User', 'ArticlesTag');
$data = array(
'Article' => array(
'user_id' => 1,
'title' => 'Article Has and belongs to Many Tags'
),
'Tag' => array(
'Tag' => array(1, 2)
),
'Comment' => array(
array(
'comment' => 'Article comment',
'user_id' => 1
)));
$Article = new Article();
$Article->set($data);
$result = $Article->saveAll();
$this->assertFalse(empty($result));
}
/** /**
* test that saveAll behaves like plain save() when supplied empty data * test that saveAll behaves like plain save() when supplied empty data
* *
@ -4740,7 +4766,7 @@ class ModelWriteTest extends BaseModelTest {
$this->assertFalse(empty($result)); $this->assertFalse(empty($result));
$model = new ProductUpdateAll(); $model = new ProductUpdateAll();
$result = $model->saveAll(array()); $result = $model->saveAll();
$this->assertFalse($result); $this->assertFalse($result);
} }