From 9992cff96c48842de23147e4dc6925c7e7c657f0 Mon Sep 17 00:00:00 2001 From: mark_story Date: Tue, 28 Sep 2010 22:26:54 -0400 Subject: [PATCH] Adding another test for #250. --- .../cases/libs/model/model_delete.test.php | 28 +++++++++++++++++++ cake/tests/cases/libs/model/models.php | 18 ++++++++++++ 2 files changed, 46 insertions(+) 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 *