From 9197a8d08b74c57766916cf880d71f89818c64c5 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Sun, 24 Jan 2021 21:12:32 -0500 Subject: [PATCH] Implement feed deletion --- lib/REST/Miniflux/V1.php | 11 ++++++++++- tests/cases/REST/Miniflux/TestV1.php | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/REST/Miniflux/V1.php b/lib/REST/Miniflux/V1.php index e987a25..705a77f 100644 --- a/lib/REST/Miniflux/V1.php +++ b/lib/REST/Miniflux/V1.php @@ -785,7 +785,6 @@ class V1 extends \JKingWeb\Arsse\REST\AbstractHandler { } try { Arsse::$db->subscriptionPropertiesSet(Arsse::$user->id, (int) $path[1], $in); - return $this->getFeed($path); } catch (ExceptionInput $e) { switch ($e->getCode()) { case 10231: @@ -797,6 +796,16 @@ class V1 extends \JKingWeb\Arsse\REST\AbstractHandler { return new ErrorResponse("404", 404); } } + return $this->getFeed($path); + } + + protected function deleteFeed(array $path): ResponseInterface { + try { + Arsse::$db->subscriptionRemove(Arsse::$user->id, (int) $path[1]); + return new EmptyResponse(204); + } catch (ExceptionInput $e) { + return new ErrorResponse("404", 404); + } } public static function tokenGenerate(string $user, string $label): string { diff --git a/tests/cases/REST/Miniflux/TestV1.php b/tests/cases/REST/Miniflux/TestV1.php index dbb0eff..c866aa1 100644 --- a/tests/cases/REST/Miniflux/TestV1.php +++ b/tests/cases/REST/Miniflux/TestV1.php @@ -712,4 +712,16 @@ class TestV1 extends \JKingWeb\Arsse\Test\AbstractTest { [['title' => "Ook!", 'crawler' => true], ['title' => "Ook!", 'scrape' => true], true, $success] ]; } + + public function testDeleteAFeed(): void { + \Phake::when(Arsse::$db)->subscriptionRemove->thenReturn(true); + $this->assertMessage(new EmptyResponse(204), $this->req("DELETE", "/feeds/2112")); + \Phake::verify(Arsse::$db)->subscriptionRemove(Arsse::$user->id, 2112); + } + + public function testDeleteAMissingFeed(): void { + \Phake::when(Arsse::$db)->subscriptionRemove->thenThrow(new ExceptionInput("subjectMissing")); + $this->assertMessage(new ErrorResponse("404", 404), $this->req("DELETE", "/feeds/2112")); + \Phake::verify(Arsse::$db)->subscriptionRemove(Arsse::$user->id, 2112); + } }