]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #1805 from wallabag/v2-assign-comma-tags
authorNicolas Lœuillet <nicolas@loeuillet.org>
Mon, 28 Mar 2016 07:42:13 +0000 (09:42 +0200)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Mon, 28 Mar 2016 07:42:13 +0000 (09:42 +0200)
Fix #1768 Split tags with commas from UI

src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php
src/Wallabag/CoreBundle/Controller/TagController.php
src/Wallabag/CoreBundle/Tests/Controller/TagControllerTest.php

index ccb72d23d5e13f579b99c776243f7f205833a0f8..04875f29bd3517a0c0dd9491fcd4a94f38395fab 100644 (file)
@@ -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()
index 56e5195c1fc0075af5d9896416a5c9f5e5965ee3..1a1f8c3d3b15233fda2ae92874a7a7f5c22d9b41 100644 (file)
@@ -20,25 +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)) {
-                $entry->addTag($tag);
-                $em->persist($tag);
-            } elseif (!$existingTag->hasEntry($entry)) {
-                $entry->addTag($existingTag);
-                $em->persist($existingTag);
-            }
-
+            $em->persist($entry);
             $em->flush();
 
             $this->get('session')->getFlashBag()->add(
index 338121e7e1312a13144afbd69961566aaaa13919..1457c80750901e1ac80c5f3a70043d6c55020235 100644 (file)
@@ -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');