]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Simplify tag creation from entry 1805/head
authorJeremy Benoist <jeremy.benoist@gmail.com>
Sun, 27 Mar 2016 15:09:33 +0000 (17:09 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Sun, 27 Mar 2016 15:09:33 +0000 (17:09 +0200)
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.

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 f31f4028c217b0d9ba05862b8bcc7177b82dee5f..1a1f8c3d3b15233fda2ae92874a7a7f5c22d9b41 100644 (file)
@@ -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(
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');