$em->remove($tag);
$em->flush();
}
+
+ public function testRenameTagUsingTheFormInsideTagList()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $tag = new Tag();
+ $tag->setLabel($this->tagName);
+ $entry = new Entry($this->getLoggedInUser());
+ $entry->setUrl('http://0.0.0.0/foo');
+ $entry->addTag($tag);
+ $this->getEntityManager()->persist($entry);
+ $this->getEntityManager()->flush();
+ $this->getEntityManager()->clear();
+
+ // We make a first request to set an history and test redirection after tag deletion
+ $crawler = $client->request('GET', '/tag/list');
+ $form = $crawler->filter('#tag-' . $tag->getId() . ' form')->form();
+
+ $data = [
+ 'tag[label]' => 'specific label',
+ ];
+
+ $client->submit($form, $data);
+ $this->assertSame(302, $client->getResponse()->getStatusCode());
+
+ $freshEntry = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->find($entry->getId());
+
+ $tags = $freshEntry->getTags()->toArray();
+ foreach ($tags as $key => $item) {
+ $tags[$key] = $item->getLabel();
+ }
+
+ $this->assertFalse(array_search($tag->getLabel(), $tags, true), 'Previous tag is not attach to entry anymore.');
+
+ $newTag = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Tag')
+ ->findOneByLabel('specific label');
+ $this->assertInstanceOf(Tag::class, $newTag, 'Tag "specific label" exists.');
+ $this->assertTrue($newTag->hasEntry($freshEntry), 'Tag "specific label" is assigned to the entry.');
+ }
}