diff options
author | Nicolas LÅ“uillet <nicolas@loeuillet.org> | 2016-03-28 09:42:13 +0200 |
---|---|---|
committer | Nicolas LÅ“uillet <nicolas@loeuillet.org> | 2016-03-28 09:42:13 +0200 |
commit | ba2157b270095757eb5af8062df72ce16c497637 (patch) | |
tree | 47f16f84e30fe2c04bccac56d7421f53a99591ce | |
parent | cc8c2d315f6868201ff32cc4895844c800624a87 (diff) | |
parent | 2baca964f38e658f60c8b9f81a9db289ba85bd0d (diff) | |
download | wallabag-ba2157b270095757eb5af8062df72ce16c497637.tar.gz wallabag-ba2157b270095757eb5af8062df72ce16c497637.tar.zst wallabag-ba2157b270095757eb5af8062df72ce16c497637.zip |
Merge pull request #1805 from wallabag/v2-assign-comma-tags
Fix #1768 Split tags with commas from UI
3 files changed, 40 insertions, 15 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 | |||
171 | $this->client->request('POST', '/api/entries.json', array( | 171 | $this->client->request('POST', '/api/entries.json', array( |
172 | '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', | 172 | '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', |
173 | 'archive' => '1', | 173 | 'archive' => '1', |
174 | 'tags' => 'google, apple', | ||
174 | )); | 175 | )); |
175 | 176 | ||
176 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | 177 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); |
@@ -181,7 +182,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
181 | $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']); | 182 | $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']); |
182 | $this->assertEquals(true, $content['is_archived']); | 183 | $this->assertEquals(true, $content['is_archived']); |
183 | $this->assertEquals(false, $content['is_starred']); | 184 | $this->assertEquals(false, $content['is_starred']); |
184 | $this->assertCount(1, $content['tags']); | 185 | $this->assertCount(2, $content['tags']); |
185 | } | 186 | } |
186 | 187 | ||
187 | public function testPostArchivedAndStarredEntry() | 188 | public function testPostArchivedAndStarredEntry() |
diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php index 56e5195c..1a1f8c3d 100644 --- a/src/Wallabag/CoreBundle/Controller/TagController.php +++ b/src/Wallabag/CoreBundle/Controller/TagController.php | |||
@@ -20,25 +20,17 @@ class TagController extends Controller | |||
20 | */ | 20 | */ |
21 | public function addTagFormAction(Request $request, Entry $entry) | 21 | public function addTagFormAction(Request $request, Entry $entry) |
22 | { | 22 | { |
23 | $tag = new Tag(); | 23 | $form = $this->createForm(NewTagType::class, new Tag()); |
24 | $form = $this->createForm(NewTagType::class, $tag); | ||
25 | $form->handleRequest($request); | 24 | $form->handleRequest($request); |
26 | 25 | ||
27 | if ($form->isValid()) { | 26 | if ($form->isValid()) { |
28 | $existingTag = $this->getDoctrine() | 27 | $this->get('wallabag_core.content_proxy')->assignTagsToEntry( |
29 | ->getRepository('WallabagCoreBundle:Tag') | 28 | $entry, |
30 | ->findOneByLabel($tag->getLabel()); | 29 | $form->get('label')->getData() |
30 | ); | ||
31 | 31 | ||
32 | $em = $this->getDoctrine()->getManager(); | 32 | $em = $this->getDoctrine()->getManager(); |
33 | 33 | $em->persist($entry); | |
34 | if (is_null($existingTag)) { | ||
35 | $entry->addTag($tag); | ||
36 | $em->persist($tag); | ||
37 | } elseif (!$existingTag->hasEntry($entry)) { | ||
38 | $entry->addTag($existingTag); | ||
39 | $em->persist($existingTag); | ||
40 | } | ||
41 | |||
42 | $em->flush(); | 34 | $em->flush(); |
43 | 35 | ||
44 | $this->get('session')->getFlashBag()->add( | 36 | $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 | |||
68 | $this->assertEquals(2, count($newEntry->getTags())); | 68 | $this->assertEquals(2, count($newEntry->getTags())); |
69 | } | 69 | } |
70 | 70 | ||
71 | public function testAddMultipleTagToEntry() | ||
72 | { | ||
73 | $this->logInAs('admin'); | ||
74 | $client = $this->getClient(); | ||
75 | |||
76 | $entry = $client->getContainer() | ||
77 | ->get('doctrine.orm.entity_manager') | ||
78 | ->getRepository('WallabagCoreBundle:Entry') | ||
79 | ->findOneByUsernameAndNotArchived('admin'); | ||
80 | |||
81 | $crawler = $client->request('GET', '/view/'.$entry->getId()); | ||
82 | |||
83 | $form = $crawler->filter('form[name=tag]')->form(); | ||
84 | |||
85 | $data = array( | ||
86 | 'tag[label]' => 'foo2, bar2', | ||
87 | ); | ||
88 | |||
89 | $client->submit($form, $data); | ||
90 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
91 | |||
92 | $newEntry = $client->getContainer() | ||
93 | ->get('doctrine.orm.entity_manager') | ||
94 | ->getRepository('WallabagCoreBundle:Entry') | ||
95 | ->find($entry->getId()); | ||
96 | |||
97 | $tags = $newEntry->getTags()->toArray(); | ||
98 | $this->assertGreaterThanOrEqual(2, count($tags)); | ||
99 | $this->assertNotEquals(false, array_search('foo2', $tags), 'Tag foo2 is assigned to the entry'); | ||
100 | $this->assertNotEquals(false, array_search('bar2', $tags), 'Tag bar2 is assigned to the entry'); | ||
101 | } | ||
102 | |||
71 | public function testRemoveTagFromEntry() | 103 | public function testRemoveTagFromEntry() |
72 | { | 104 | { |
73 | $this->logInAs('admin'); | 105 | $this->logInAs('admin'); |