From 2baca964f38e658f60c8b9f81a9db289ba85bd0d Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sun, 27 Mar 2016 17:09:33 +0200 Subject: [PATCH] Simplify tag creation from entry Testing that a tag exist or is assigned to the current entry isn't important in the tag controler since the `assignTagsToEntry` is already doing that job. So it simplify the controller. --- .../Controller/WallabagRestControllerTest.php | 3 +- .../CoreBundle/Controller/TagController.php | 26 ++++----------- .../Tests/Controller/TagControllerTest.php | 32 +++++++++++++++++++ 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php index ccb72d23..04875f29 100644 --- a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php +++ b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php @@ -171,6 +171,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase $this->client->request('POST', '/api/entries.json', array( 'url' => 'http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html', 'archive' => '1', + 'tags' => 'google, apple', )); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -181,7 +182,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase $this->assertEquals('http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html', $content['url']); $this->assertEquals(true, $content['is_archived']); $this->assertEquals(false, $content['is_starred']); - $this->assertCount(1, $content['tags']); + $this->assertCount(2, $content['tags']); } public function testPostArchivedAndStarredEntry() diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php index f31f4028..1a1f8c3d 100644 --- a/src/Wallabag/CoreBundle/Controller/TagController.php +++ b/src/Wallabag/CoreBundle/Controller/TagController.php @@ -20,31 +20,17 @@ class TagController extends Controller */ public function addTagFormAction(Request $request, Entry $entry) { - $tag = new Tag(); - $form = $this->createForm(NewTagType::class, $tag); + $form = $this->createForm(NewTagType::class, new Tag()); $form->handleRequest($request); if ($form->isValid()) { - $existingTag = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Tag') - ->findOneByLabel($tag->getLabel()); + $this->get('wallabag_core.content_proxy')->assignTagsToEntry( + $entry, + $form->get('label')->getData() + ); $em = $this->getDoctrine()->getManager(); - - if (is_null($existingTag)) { - $this->get('wallabag_core.content_proxy')->assignTagsToEntry( - $entry, - $tag - ); - $em->persist($tag); - } elseif (!$existingTag->hasEntry($entry)) { - $this->get('wallabag_core.content_proxy')->assignTagsToEntry( - $entry, - $existingTag - ); - $em->persist($existingTag); - } - + $em->persist($entry); $em->flush(); $this->get('session')->getFlashBag()->add( diff --git a/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php index 338121e7..1457c807 100644 --- a/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php +++ b/src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php @@ -68,6 +68,38 @@ class TagControllerTest extends WallabagCoreTestCase $this->assertEquals(2, count($newEntry->getTags())); } + public function testAddMultipleTagToEntry() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $entry = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneByUsernameAndNotArchived('admin'); + + $crawler = $client->request('GET', '/view/'.$entry->getId()); + + $form = $crawler->filter('form[name=tag]')->form(); + + $data = array( + 'tag[label]' => 'foo2, bar2', + ); + + $client->submit($form, $data); + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $newEntry = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->find($entry->getId()); + + $tags = $newEntry->getTags()->toArray(); + $this->assertGreaterThanOrEqual(2, count($tags)); + $this->assertNotEquals(false, array_search('foo2', $tags), 'Tag foo2 is assigned to the entry'); + $this->assertNotEquals(false, array_search('bar2', $tags), 'Tag bar2 is assigned to the entry'); + } + public function testRemoveTagFromEntry() { $this->logInAs('admin'); -- 2.41.0