From 5a4ee4ae0fe7bed85fc68a9e96aee8bf5d1ee782 Mon Sep 17 00:00:00 2001 From: Nicolas Loeuillet Date: Mon, 21 Mar 2016 14:06:07 +0100 Subject: Split tags with commas from UI --- src/Wallabag/CoreBundle/Controller/TagController.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/Wallabag/CoreBundle') diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php index 56e5195c..f31f4028 100644 --- a/src/Wallabag/CoreBundle/Controller/TagController.php +++ b/src/Wallabag/CoreBundle/Controller/TagController.php @@ -32,10 +32,16 @@ class TagController extends Controller $em = $this->getDoctrine()->getManager(); if (is_null($existingTag)) { - $entry->addTag($tag); + $this->get('wallabag_core.content_proxy')->assignTagsToEntry( + $entry, + $tag + ); $em->persist($tag); } elseif (!$existingTag->hasEntry($entry)) { - $entry->addTag($existingTag); + $this->get('wallabag_core.content_proxy')->assignTagsToEntry( + $entry, + $existingTag + ); $em->persist($existingTag); } -- cgit v1.2.3 From 2baca964f38e658f60c8b9f81a9db289ba85bd0d Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sun, 27 Mar 2016 17:09:33 +0200 Subject: 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. --- .../CoreBundle/Controller/TagController.php | 26 ++++-------------- .../Tests/Controller/TagControllerTest.php | 32 ++++++++++++++++++++++ 2 files changed, 38 insertions(+), 20 deletions(-) (limited to 'src/Wallabag/CoreBundle') 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'); -- cgit v1.2.3