diff options
author | Bernhard Posselt <Raydiation@users.noreply.github.com> | 2014-03-13 00:34:40 +0100 |
---|---|---|
committer | Bernhard Posselt <Raydiation@users.noreply.github.com> | 2014-03-13 00:34:40 +0100 |
commit | 7d37d7e2385f5008060c8f3f988eb92da65b323a (patch) | |
tree | 9b02fea869e9328b3c5a48ea38de262c67143943 | |
parent | 37181c603b2aaa4dbd0d17ecf4927f28523c2ad8 (diff) | |
parent | d67b77ac255974d2298bd858b636767e490a4e41 (diff) |
Merge pull request #492 from sub/issue455
Add feed renaming to the API
-rw-r--r-- | api/feedapi.php | 22 | ||||
-rw-r--r-- | appinfo/routes.php | 6 | ||||
-rw-r--r-- | tests/unit/api/FeedAPITest.php | 37 |
3 files changed, 65 insertions, 0 deletions
diff --git a/api/feedapi.php b/api/feedapi.php index 4ad9b3307..0880434d8 100644 --- a/api/feedapi.php +++ b/api/feedapi.php @@ -183,6 +183,28 @@ class FeedAPI extends Controller { /** + * @IsAdminExemption + * @IsSubAdminExemption + * @CSRFExemption + * @Ajax + * @API + */ + public function rename() { + $userId = $this->api->getUserId(); + $feedId = (int) $this->params('feedId'); + $feedTitle = $this->params('feedTitle'); + + try { + $this->feedBusinessLayer->rename($feedId, $feedTitle, $userId); + return new JSONResponse(); + } catch(BusinessLayerException $ex) { + return new JSONResponse(array('message' => $ex->getMessage()), + Http::STATUS_NOT_FOUND); + } + } + + + /** * @CSRFExemption * @Ajax * @API diff --git a/appinfo/routes.php b/appinfo/routes.php index cc697d0a9..fc60a717c 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -354,6 +354,12 @@ $this->create('news_api_feeds_move', '/api/v1-2/feeds/{feedId}/move')->put()->ac } ); +$this->create('news_api_feeds_rename', '/api/v1-2/feeds/{feedId}/rename')->put()->action( + function($params) { + return App::main('FeedAPI', 'rename', $params, new DIContainer()); + } +); + $this->create('news_api_feeds_read', '/api/v1-2/feeds/{feedId}/read')->put()->action( function($params) { return App::main('FeedAPI', 'read', $params, new DIContainer()); diff --git a/tests/unit/api/FeedAPITest.php b/tests/unit/api/FeedAPITest.php index e3b5b5587..6b2187657 100644 --- a/tests/unit/api/FeedAPITest.php +++ b/tests/unit/api/FeedAPITest.php @@ -437,6 +437,43 @@ class FeedAPITest extends ControllerTestUtility { } + public function testRename() { + $feedId = 3; + $feedTitle = 'test'; + + $request = new Request(array( + 'urlParams' => array( + 'feedId' => $feedId + ), + 'params' => array( + 'feedTitle' => $feedTitle + ) + )); + $this->feedAPI = new FeedAPI( + $this->api, + $request, + $this->folderBusinessLayer, + $this->feedBusinessLayer, + $this->itemBusinessLayer + ); + + $this->api->expects($this->once()) + ->method('getUserId') + ->will($this->returnValue($this->user)); + $this->feedBusinessLayer->expects($this->once()) + ->method('rename') + ->with( + $this->equalTo($feedId), + $this->equalTo($feedTitle), + $this->equalTo($this->user)); + + $response = $this->feedAPI->rename(); + + $this->assertEmpty($response->getData()); + $this->assertEquals(Http::STATUS_OK, $response->getStatus()); + } + + public function testMoveDoesNotExist() { $this->api->expects($this->once()) ->method('getUserId') |