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.
$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());
$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()
*/
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(
$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');