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); + } }