3 namespace Wallabag\CoreBundle\Tests\Controller
;
5 use Wallabag\CoreBundle\Tests\WallabagCoreTestCase
;
7 class TagControllerTest
extends WallabagCoreTestCase
9 public $tagName = 'opensource';
11 public function testList()
13 $this->logInAs('admin');
14 $client = $this->getClient();
16 $client->request('GET', '/tag/list');
18 $this->assertEquals(200, $client->getResponse()->getStatusCode());
21 public function testAddTagToEntry()
23 $this->logInAs('admin');
24 $client = $this->getClient();
26 $entry = $client->getContainer()
27 ->get('doctrine.orm.entity_manager')
28 ->getRepository('WallabagCoreBundle:Entry')
29 ->findOneByUsernameAndNotArchived('admin');
31 $crawler = $client->request('GET', '/view/'.$entry->getId());
33 $form = $crawler->filter('form[name=tag]')->form();
36 'tag[label]' => $this->tagName
,
39 $client->submit($form, $data);
40 $this->assertEquals(302, $client->getResponse()->getStatusCode());
42 $this->assertEquals(1, count($entry->getTags()));
44 # tag already exists and already assigned
45 $client->submit($form, $data);
46 $this->assertEquals(302, $client->getResponse()->getStatusCode());
48 $newEntry = $client->getContainer()
49 ->get('doctrine.orm.entity_manager')
50 ->getRepository('WallabagCoreBundle:Entry')
51 ->find($entry->getId());
53 $this->assertEquals(1, count($newEntry->getTags()));
55 # tag already exists but still not assigned to this entry
57 'tag[label]' => 'foo',
60 $client->submit($form, $data);
61 $this->assertEquals(302, $client->getResponse()->getStatusCode());
63 $newEntry = $client->getContainer()
64 ->get('doctrine.orm.entity_manager')
65 ->getRepository('WallabagCoreBundle:Entry')
66 ->find($entry->getId());
68 $this->assertEquals(2, count($newEntry->getTags()));
71 public function testAddMultipleTagToEntry()
73 $this->logInAs('admin');
74 $client = $this->getClient();
76 $entry = $client->getContainer()
77 ->get('doctrine.orm.entity_manager')
78 ->getRepository('WallabagCoreBundle:Entry')
79 ->findOneByUsernameAndNotArchived('admin');
81 $crawler = $client->request('GET', '/view/'.$entry->getId());
83 $form = $crawler->filter('form[name=tag]')->form();
86 'tag[label]' => 'foo2, bar2',
89 $client->submit($form, $data);
90 $this->assertEquals(302, $client->getResponse()->getStatusCode());
92 $newEntry = $client->getContainer()
93 ->get('doctrine.orm.entity_manager')
94 ->getRepository('WallabagCoreBundle:Entry')
95 ->find($entry->getId());
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');
103 public function testRemoveTagFromEntry()
105 $this->logInAs('admin');
106 $client = $this->getClient();
108 $entry = $client->getContainer()
109 ->get('doctrine.orm.entity_manager')
110 ->getRepository('WallabagCoreBundle:Entry')
111 ->findOneByUsernameAndNotArchived('admin');
113 $tag = $client->getContainer()
114 ->get('doctrine.orm.entity_manager')
115 ->getRepository('WallabagCoreBundle:Tag')
116 ->findOneByEntryAndTagLabel($entry, $this->tagName
);
118 $client->request('GET', '/remove-tag/'.$entry->getId().'/'.$tag->getId());
120 $this->assertEquals(302, $client->getResponse()->getStatusCode());
122 $this->assertNotContains($this->tagName
, $entry->getTags());
124 $client->request('GET', '/remove-tag/'.$entry->getId().'/'.$tag->getId());
126 $this->assertEquals(404, $client->getResponse()->getStatusCode());