]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Add tests about the tag renaming process.
authorStéphane HULARD <s.hulard@chstudio.fr>
Wed, 24 Jan 2018 16:53:00 +0000 (17:53 +0100)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Tue, 25 Sep 2018 08:18:36 +0000 (10:18 +0200)
tests/Wallabag/CoreBundle/Controller/TagControllerTest.php

index 768f4c0789d5ef733105c0d8a15e03581440ab8f..be17dcf51030f767802b2a44912d7576059d6a82 100644 (file)
@@ -176,4 +176,49 @@ class TagControllerTest extends WallabagCoreTestCase
         $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.');
+    }
 }