diff --git a/cake/tests/cases/libs/model/model_delete.test.php b/cake/tests/cases/libs/model/model_delete.test.php index c44bad3fd..18c7e2db6 100644 --- a/cake/tests/cases/libs/model/model_delete.test.php +++ b/cake/tests/cases/libs/model/model_delete.test.php @@ -708,4 +708,32 @@ class ModelDeleteTest extends BaseModelTest { // Removing Article #2 from Tag #1 is all that should have happened. $this->assertEqual(count($before[0]["Tag"]), count($after[0]["Tag"])); } + +/** + * test that deleting records inside the beforeDelete doesn't truncate the table. + * + * @return void + */ + function testBeforeDeleteWipingTable() { + $this->loadFixtures('Comment'); + + $Comment =& new BeforeDeleteComment(); + // Delete 3 records. + $Comment->delete(4); + $result = $Comment->find('count'); + + $this->assertTrue($result > 1, 'Comments are all gone.'); + $Comment->create(array( + 'article_id' => 1, + 'user_id' => 2, + 'comment' => 'new record', + 'published' => 'Y' + )); + $Comment->save(); + + $Comment->delete(5); + $result = $Comment->find('count'); + + $this->assertTrue($result > 1, 'Comments are all gone.'); + } } diff --git a/cake/tests/cases/libs/model/models.php b/cake/tests/cases/libs/model/models.php index 7f1df3492..890b4f284 100644 --- a/cake/tests/cases/libs/model/models.php +++ b/cake/tests/cases/libs/model/models.php @@ -282,6 +282,24 @@ class Article extends CakeTestModel { } } +/** + * Model stub for beforeDelete testing + * + * @see #250 + * @package cake.tests + */ +class BeforeDeleteComment extends CakeTestModel { + var $name = 'BeforeDeleteComment'; + + var $useTable = 'comments'; + + function beforeDelete($cascade = true) { + $db =& $this->getDataSource(); + $db->delete($this, array($this->alias . '.' . $this->primaryKey => array(1, 3))); + return true; + } +} + /** * NumericArticle class *