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.
This commit is contained in:
Jeremy Benoist 2016-03-27 17:09:33 +02:00
parent 5a4ee4ae0f
commit 2baca964f3
3 changed files with 40 additions and 21 deletions

View 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()

View 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(

View 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');