From 242555e659d4c03f46bc95a7437456718f1b6706 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Fri, 24 May 2013 17:15:51 +0200 Subject: fixed a bug when deleting folders --- CHANGELOG | 3 +++ appinfo/info.xml | 2 +- appinfo/version | 2 +- db/foldermapper.php | 11 +++++++---- tests/unit/db/FolderMapperTest.php | 15 ++++++++++++--- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f7ae91716..245d07e07 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +ownCloud-news (0.103) +* Fixed a bug that prevented deleting feeds when a folder was deleted + ownCloud-news (0.102) * Fix marking read of all articles and folders on mysql and postgres * Fix bug that would still show items after its feed or folder has been marked as deleted diff --git a/appinfo/info.xml b/appinfo/info.xml index 03ad42716..83b537c41 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -5,6 +5,6 @@ An RSS/Atom feed reader. Requires the App Framework app and backgroundjobs need to be enabled. See the README.rst in the apps top directory AGPL Alessandro Cosentino, Bernhard Posselt, Jan-Christoph Borchardt. Powered by SimplePie (Ryan Parman, Geoffrey Sneddon, Ryan McCue and contributors). - 0.102 + 0.103 5.0.6 diff --git a/appinfo/version b/appinfo/version index ef975df47..b94f26bf5 100644 --- a/appinfo/version +++ b/appinfo/version @@ -1 +1 @@ -0.102 \ No newline at end of file +0.103 \ No newline at end of file diff --git a/db/foldermapper.php b/db/foldermapper.php index c2a44dc20..ceb70f18c 100644 --- a/db/foldermapper.php +++ b/db/foldermapper.php @@ -88,12 +88,15 @@ class FolderMapper extends Mapper implements IMapper { // someone please slap me for doing this manually :P // we needz CASCADE + FKs please - $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `folder_id` = ?; '. - 'DELETE `items` FROM `*PREFIX*news_items` `items` '. - 'LEFT JOIN `*PREFIX*news_feeds` `feeds` ON '. - '`items`.`feed_id` = `feed`.`id` WHERE `feeds`.`id` IS NULL;'; + $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `folder_id` = ?'; $params = array($entity->getId()); $this->execute($sql, $params); + + $sql = 'DELETE `items` FROM `*PREFIX*news_items` `items` '. + 'LEFT JOIN `*PREFIX*news_feeds` `feeds` ON '. + '`items`.`feed_id` = `feeds`.`id` WHERE `feeds`.`id` IS NULL'; + + $this->execute($sql); } diff --git a/tests/unit/db/FolderMapperTest.php b/tests/unit/db/FolderMapperTest.php index d31a014a6..d065b9cbc 100644 --- a/tests/unit/db/FolderMapperTest.php +++ b/tests/unit/db/FolderMapperTest.php @@ -144,10 +144,11 @@ class FolderMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility { $sql = 'DELETE FROM `*PREFIX*news_folders` WHERE `id` = ?'; $arguments = array($folder->getId()); - $sql2 = 'DELETE FROM `*PREFIX*news_feeds` WHERE `folder_id` = ?; '. - 'DELETE `items` FROM `*PREFIX*news_items` `items` '. + $sql2 = 'DELETE FROM `*PREFIX*news_feeds` WHERE `folder_id` = ?'; + + $sql3 = 'DELETE `items` FROM `*PREFIX*news_items` `items` '. 'LEFT JOIN `*PREFIX*news_feeds` `feeds` ON '. - '`items`.`feed_id` = `feed`.`id` WHERE `feeds`.`id` IS NULL;'; + '`items`.`feed_id` = `feeds`.`id` WHERE `feeds`.`id` IS NULL'; $arguments2 = array($folder->getId()); $pdoResult = $this->getMock('Result', @@ -175,6 +176,14 @@ class FolderMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility { ->with($this->equalTo($sql2)) ->will(($this->returnValue($query))); + $query->expects($this->at(2)) + ->method('execute') + ->will($this->returnValue($pdoResult)); + $this->api->expects($this->at(2)) + ->method('prepareQuery') + ->with($this->equalTo($sql3)) + ->will(($this->returnValue($query))); + $this->folderMapper->delete($folder); } -- cgit v1.2.3