From c741f60367be5bba21fb96f65ac220106148ceaa Mon Sep 17 00:00:00 2001 From: Ber Clausen Date: Thu, 25 Oct 2012 17:32:32 -0300 Subject: [PATCH] Make Model::find('first') always return an array. --- lib/Cake/Model/Model.php | 15 +++++++++------ .../Case/Model/Behavior/TranslateBehaviorTest.php | 2 +- lib/Cake/Test/Case/Model/ModelDeleteTest.php | 14 +++++++------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/Cake/Model/Model.php b/lib/Cake/Model/Model.php index a66574b91..9e7cec275 100644 --- a/lib/Cake/Model/Model.php +++ b/lib/Cake/Model/Model.php @@ -2613,9 +2613,12 @@ class Model extends Object implements CakeEventListener { * * Note: find(list) + database views have issues with MySQL 5.0. Try upgrading to MySQL 5.1 if you * have issues with database views. + * + * Note: find(count) has its own return values. + * * @param string $type Type of find operation (all / first / count / neighbors / list / threaded) * @param array $query Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks) - * @return array Array of records + * @return array Array of records, or Null on failure. * @link http://book.cakephp.org/2.0/en/models/deleting-data.html#deleteall */ public function find($type = 'first', $query = array()) { @@ -2638,10 +2641,10 @@ class Model extends Object implements CakeEventListener { if ($type === 'all') { return $results; - } else { - if ($this->findMethods[$type] === true) { - return $this->{'_find' . ucfirst($type)}('after', $query, $results); - } + } + + if ($this->findMethods[$type] === true) { + return $this->{'_find' . ucfirst($type)}('after', $query, $results); } } @@ -2707,7 +2710,7 @@ class Model extends Object implements CakeEventListener { return $query; } elseif ($state === 'after') { if (empty($results[0])) { - return false; + return array(); } return $results[0]; } diff --git a/lib/Cake/Test/Case/Model/Behavior/TranslateBehaviorTest.php b/lib/Cake/Test/Case/Model/Behavior/TranslateBehaviorTest.php index 9a7ab4342..73d460b92 100644 --- a/lib/Cake/Test/Case/Model/Behavior/TranslateBehaviorTest.php +++ b/lib/Cake/Test/Case/Model/Behavior/TranslateBehaviorTest.php @@ -422,7 +422,7 @@ class TranslateBehaviorTest extends CakeTestCase { $TestModel = new TranslatedItem(); $TestModel->locale = 'rus'; $result = $TestModel->read(null, 1); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $TestModel->locale = array('rus'); $result = $TestModel->read(null, 1); diff --git a/lib/Cake/Test/Case/Model/ModelDeleteTest.php b/lib/Cake/Test/Case/Model/ModelDeleteTest.php index 329eef387..80eef2210 100644 --- a/lib/Cake/Test/Case/Model/ModelDeleteTest.php +++ b/lib/Cake/Test/Case/Model/ModelDeleteTest.php @@ -107,7 +107,7 @@ class ModelDeleteTest extends BaseModelTest { $result = $Portfolio->find('first', array( 'conditions' => array('Portfolio.id' => 1) )); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $result = $Portfolio->ItemsPortfolio->find('all', array( 'conditions' => array('ItemsPortfolio.portfolio_id' => 1) @@ -195,7 +195,7 @@ class ModelDeleteTest extends BaseModelTest { $this->assertTrue($result); $result = $TestModel->read(null, 2); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $TestModel->recursive = -1; $result = $TestModel->find('all', array( @@ -216,7 +216,7 @@ class ModelDeleteTest extends BaseModelTest { $this->assertTrue($result); $result = $TestModel->read(null, 3); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $TestModel->recursive = -1; $result = $TestModel->find('all', array( @@ -448,16 +448,16 @@ class ModelDeleteTest extends BaseModelTest { $TestModel->recursive = 2; $result = $TestModel->read(null, 2); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $result = $TestModel->Comment->read(null, 5); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $result = $TestModel->Comment->read(null, 6); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $result = $TestModel->Comment->Attachment->read(null, 1); - $this->assertFalse($result); + $this->assertEquals(array(), $result); $result = $TestModel->find('count'); $this->assertEquals(2, $result);