Browse Source

Fixing expected value from find when it results in failure.
When a behavior callback (eg: beforeFind) stops the event, find will return null. False is really never returned from find().

Renan Gonçalves 13 years ago
parent
commit
23d4807933
2 changed files with 21 additions and 1 deletions
  1. 1 1
      lib/Cake/Model/Model.php
  2. 20 0
      lib/Cake/Test/Case/Model/ModelDeleteTest.php

+ 1 - 1
lib/Cake/Model/Model.php

@@ -2496,7 +2496,7 @@ class Model extends Object implements CakeEventListener {
 				'fields' => "{$this->alias}.{$this->primaryKey}",
 				'recursive' => 0), compact('conditions'))
 			);
-			if ($ids === false) {
+			if ($ids === null) {
 				return false;
 			}
 

+ 20 - 0
lib/Cake/Test/Case/Model/ModelDeleteTest.php

@@ -435,6 +435,26 @@ class ModelDeleteTest extends BaseModelTest {
 	}
 
 /**
+ * testDeleteAllFailedFind method
+ *
+ * Eg: Behavior callback stops the event, find returns null
+ *
+ * @return void
+ */
+	public function testDeleteAllFailedFind() {
+		$this->loadFixtures('Article');
+		$this->getMock('Article', array('find'), array(), 'ArticleDeleteAll');
+
+		$TestModel = new ArticleDeleteAll();
+		$TestModel->expects($this->once())
+			->method('find')
+			->will($this->returnValue(null));
+
+		$result = $TestModel->deleteAll(array('Article.user_id' => 999));
+		$this->assertFalse($result);
+	}
+
+/**
  * testRecursiveDel method
  *
  * @return void