3 namespace Tests\Wallabag\CoreBundle\Controller
;
5 use Tests\Wallabag\CoreBundle\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 // be sure to reload the entry
43 $entry = $client->getContainer()
44 ->get('doctrine.orm.entity_manager')
45 ->getRepository('WallabagCoreBundle:Entry')
46 ->findOneByUsernameAndNotArchived('admin');
48 $this->assertEquals(1, count($entry->getTags()));
50 # tag already exists and already assigned
51 $client->submit($form, $data);
52 $this->assertEquals(302, $client->getResponse()->getStatusCode());
54 $newEntry = $client->getContainer()
55 ->get('doctrine.orm.entity_manager')
56 ->getRepository('WallabagCoreBundle:Entry')
57 ->find($entry->getId());
59 $this->assertEquals(1, count($newEntry->getTags()));
61 # tag already exists but still not assigned to this entry
63 'tag[label]' => 'foo',
66 $client->submit($form, $data);
67 $this->assertEquals(302, $client->getResponse()->getStatusCode());
69 $newEntry = $client->getContainer()
70 ->get('doctrine.orm.entity_manager')
71 ->getRepository('WallabagCoreBundle:Entry')
72 ->find($entry->getId());
74 $this->assertEquals(2, count($newEntry->getTags()));
77 public function testAddMultipleTagToEntry()
79 $this->logInAs('admin');
80 $client = $this->getClient();
82 $entry = $client->getContainer()
83 ->get('doctrine.orm.entity_manager')
84 ->getRepository('WallabagCoreBundle:Entry')
85 ->findOneByUsernameAndNotArchived('admin');
87 $crawler = $client->request('GET', '/view/'.$entry->getId());
89 $form = $crawler->filter('form[name=tag]')->form();
92 'tag[label]' => 'foo2, bar2',
95 $client->submit($form, $data);
96 $this->assertEquals(302, $client->getResponse()->getStatusCode());
98 $newEntry = $client->getContainer()
99 ->get('doctrine.orm.entity_manager')
100 ->getRepository('WallabagCoreBundle:Entry')
101 ->find($entry->getId());
103 $tags = $newEntry->getTags()->toArray();
104 $this->assertGreaterThanOrEqual(2, count($tags));
105 $this->assertNotEquals(false, array_search('foo2', $tags), 'Tag foo2 is assigned to the entry');
106 $this->assertNotEquals(false, array_search('bar2', $tags), 'Tag bar2 is assigned to the entry');
109 public function testRemoveTagFromEntry()
111 $this->logInAs('admin');
112 $client = $this->getClient();
114 $entry = $client->getContainer()
115 ->get('doctrine.orm.entity_manager')
116 ->getRepository('WallabagCoreBundle:Entry')
117 ->findOneByUsernameAndNotArchived('admin');
119 $tag = $client->getContainer()
120 ->get('doctrine.orm.entity_manager')
121 ->getRepository('WallabagCoreBundle:Tag')
122 ->findOneByEntryAndTagLabel($entry, $this->tagName
);
124 $client->request('GET', '/remove-tag/'.$entry->getId().'/'.$tag->getId());
126 $this->assertEquals(302, $client->getResponse()->getStatusCode());
128 $this->assertNotContains($this->tagName
, $entry->getTags());
130 $client->request('GET', '/remove-tag/'.$entry->getId().'/'.$tag->getId());
132 $this->assertEquals(404, $client->getResponse()->getStatusCode());
135 public function testShowEntriesForTagAction()
137 $this->logInAs('admin');
138 $client = $this->getClient();
140 $entry = $client->getContainer()
141 ->get('doctrine.orm.entity_manager')
142 ->getRepository('WallabagCoreBundle:Entry')
143 ->findOneByUsernameAndNotArchived('admin');
145 $tag = $client->getContainer()
146 ->get('doctrine.orm.entity_manager')
147 ->getRepository('WallabagCoreBundle:Tag')
148 ->findOneByEntryAndTagLabel($entry, 'foo');
150 $crawler = $client->request('GET', '/tag/list/'.$tag->getSlug());
152 $this->assertEquals(200, $client->getResponse()->getStatusCode());
153 $this->assertCount(2, $crawler->filter('div[class=entry]'));
155 $tag = $client->getContainer()
156 ->get('doctrine.orm.entity_manager')
157 ->getRepository('WallabagCoreBundle:Tag')
158 ->findOneByLabel('baz');
160 $crawler = $client->request('GET', '/tag/list/'.$tag->getSlug());
162 $this->assertEquals(200, $client->getResponse()->getStatusCode());
163 $this->assertCount(0, $crawler->filter('div[class=entry]'));