1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-09-15 18:57:05 +00:00

Add some tests

Also, retrieve tag from the request instead of the query (which will be the same but it's more easy to test).

Moved down `deleteTagAction` because it conflicted with the new action:

  api_delete_tag => /api/tags/{tag}.{_format}
  api_delete_tags_label => /api/tags/label.{_format}

And finally, throw exception when a tag is not found before removing it.
This commit is contained in:
Jeremy Benoist 2016-07-24 10:55:49 +02:00
parent 9bf83f1fb8
commit a0e1eafc35
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
2 changed files with 181 additions and 62 deletions

View file

@ -329,6 +329,77 @@ class WallabagRestController extends FOSRestController
return $this->renderJsonResponse($json);
}
/**
* Permanently remove one tag from **every** entry.
*
* @ApiDoc(
* requirements={
* {"name"="tag", "dataType"="string", "required"=true, "requirement"="\w+", "description"="Tag as a string"}
* }
* )
*
* @return Response
*/
public function deleteTagLabelAction(Request $request)
{
$this->validateAuthentication();
$label = $request->request->get('tag', '');
$tag = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($label);
if (empty($tag)) {
throw $this->createNotFoundException('Tag not found');
}
$this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->removeTag($this->getUser()->getId(), $tag);
$json = $this->get('serializer')->serialize($tag, 'json');
return $this->renderJsonResponse($json);
}
/**
* Permanently remove some tags from **every** entry.
*
* @ApiDoc(
* requirements={
* {"name"="tags", "dataType"="string", "required"=true, "format"="tag1,tag2", "description"="Tags as strings (comma splitted)"}
* }
* )
*
* @return Response
*/
public function deleteTagsLabelAction(Request $request)
{
$this->validateAuthentication();
$tagsLabels = $request->request->get('tags', '');
$tags = [];
foreach (explode(',', $tagsLabels) as $tagLabel) {
$tagEntity = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($tagLabel);
if (!empty($tagEntity)) {
$tags[] = $tagEntity;
}
}
if (empty($tags)) {
throw $this->createNotFoundException('Tags not found');
}
$this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->removeTags($this->getUser()->getId(), $tags);
$json = $this->get('serializer')->serialize($tags, 'json');
return $this->renderJsonResponse($json);
}
/**
* Permanently remove one tag from **every** entry.
*
@ -353,65 +424,6 @@ class WallabagRestController extends FOSRestController
return $this->renderJsonResponse($json);
}
/**
* Permanently remove one tag from **every** entry.
*
* @ApiDoc(
* requirements={
* {"name"="tag", "dataType"="string", "requirement"="\w+", "description"="The tag as a string"}
* }
* )
*
* @return Response
*/
public function deleteTagLabelAction(Request $request)
{
$this->validateAuthentication();
$label = $request->query->get('tag', '');
$tag = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($label);
$this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->removeTag($this->getUser()->getId(), $tag);
$json = $this->get('serializer')->serialize($tag, 'json');
return $this->renderJsonResponse($json);
}
/**
* Permanently remove some tags from **every** entry.
*
* @ApiDoc(
* requirements={
* {"name"="tags", "dataType"="string", "required"=true, "format"="tag1,tag2", "description"="The tags as strings"}
* }
* )
*
* @return Response
*/
public function deleteTagsLabelAction(Request $request)
{
$this->validateAuthentication();
$tagsLabels = $request->query->get('tags', '');
$tags = array();
foreach (explode(',', $tagsLabels) as $tagLabel) {
$tagEntity = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($tagLabel);
$tags[] = $tagEntity;
}
$this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
->removeTags($this->getUser()->getId(), $tags);
$json = $this->get('serializer')->serialize($tags, 'json');
return $this->renderJsonResponse($json);
}
/**
* Retrieve version number.
*