3 namespace Wallabag\CoreBundle\Tests\Controller
;
5 use Wallabag\CoreBundle\Tests\WallabagCoreTestCase
;
7 class EntryControllerTest
extends WallabagCoreTestCase
9 public $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';
11 public function testLogin()
13 $client = $this->getClient();
15 $client->request('GET', '/new');
17 $this->assertEquals(302, $client->getResponse()->getStatusCode());
18 $this->assertContains('login', $client->getResponse()->headers
->get('location'));
21 public function testGetNew()
23 $this->logInAs('admin');
24 $client = $this->getClient();
26 $crawler = $client->request('GET', '/new');
28 $this->assertEquals(200, $client->getResponse()->getStatusCode());
30 $this->assertCount(1, $crawler->filter('input[type=url]'));
31 $this->assertCount(1, $crawler->filter('button[type=submit]'));
34 public function testPostNewEmpty()
36 $this->logInAs('admin');
37 $client = $this->getClient();
39 $crawler = $client->request('GET', '/new');
41 $this->assertEquals(200, $client->getResponse()->getStatusCode());
43 $form = $crawler->filter('button[type=submit]')->form();
45 $crawler = $client->submit($form);
47 $this->assertEquals(200, $client->getResponse()->getStatusCode());
48 $this->assertCount(1, $alert = $crawler->filter('form ul li')->extract(array('_text')));
49 $this->assertEquals('This value should not be blank.', $alert[0]);
52 public function testPostNewOk()
54 $this->logInAs('admin');
55 $client = $this->getClient();
57 $crawler = $client->request('GET', '/new');
59 $this->assertEquals(200, $client->getResponse()->getStatusCode());
61 $form = $crawler->filter('button[type=submit]')->form();
64 'entry[url]' => $this->url
,
67 $client->submit($form, $data);
69 $this->assertEquals(302, $client->getResponse()->getStatusCode());
71 $crawler = $client->followRedirect();
73 $this->assertGreaterThan(1, $alert = $crawler->filter('h2 a')->extract(array('_text')));
74 $this->assertContains('Google', $alert[0]);
77 public function testArchive()
79 $this->logInAs('admin');
80 $client = $this->getClient();
82 $client->request('GET', '/archive/list');
84 $this->assertEquals(200, $client->getResponse()->getStatusCode());
87 public function testStarred()
89 $this->logInAs('admin');
90 $client = $this->getClient();
92 $client->request('GET', '/starred/list');
94 $this->assertEquals(200, $client->getResponse()->getStatusCode());
97 public function testView()
99 $this->logInAs('admin');
100 $client = $this->getClient();
102 $content = $client->getContainer()
103 ->get('doctrine.orm.entity_manager')
104 ->getRepository('WallabagCoreBundle:Entry')
105 ->findOneByUrl($this->url
);
107 $client->request('GET', '/view/'.$content->getId());
109 $this->assertEquals(200, $client->getResponse()->getStatusCode());
110 $this->assertContains($content->getTitle(), $client->getResponse()->getContent());
113 public function testEdit()
115 $this->logInAs('admin');
116 $client = $this->getClient();
118 $content = $client->getContainer()
119 ->get('doctrine.orm.entity_manager')
120 ->getRepository('WallabagCoreBundle:Entry')
121 ->findOneByUrl($this->url
);
123 $crawler = $client->request('GET', '/edit/'.$content->getId());
125 $this->assertEquals(200, $client->getResponse()->getStatusCode());
127 $this->assertCount(1, $crawler->filter('input[id=entry_title]'));
128 $this->assertCount(1, $crawler->filter('button[id=entry_save]'));
131 public function testEditUpdate()
133 $this->logInAs('admin');
134 $client = $this->getClient();
136 $content = $client->getContainer()
137 ->get('doctrine.orm.entity_manager')
138 ->getRepository('WallabagCoreBundle:Entry')
139 ->findOneByUrl($this->url
);
141 $crawler = $client->request('GET', '/edit/'.$content->getId());
143 $this->assertEquals(200, $client->getResponse()->getStatusCode());
145 $form = $crawler->filter('button[type=submit]')->form();
148 'entry[title]' => 'My updated title hehe :)',
151 $client->submit($form, $data);
153 $this->assertEquals(302, $client->getResponse()->getStatusCode());
155 $crawler = $client->followRedirect();
157 $this->assertGreaterThan(1, $alert = $crawler->filter('div[id=article] h1')->extract(array('_text')));
158 $this->assertContains('My updated title hehe :)', $alert[0]);
161 public function testToggleArchive()
163 $this->logInAs('admin');
164 $client = $this->getClient();
166 $content = $client->getContainer()
167 ->get('doctrine.orm.entity_manager')
168 ->getRepository('WallabagCoreBundle:Entry')
169 ->findOneByUrl($this->url
);
171 $client->request('GET', '/archive/'.$content->getId());
173 $this->assertEquals(302, $client->getResponse()->getStatusCode());
175 $res = $client->getContainer()
176 ->get('doctrine.orm.entity_manager')
177 ->getRepository('WallabagCoreBundle:Entry')
178 ->find($content->getId());
180 $this->assertEquals($res->isArchived(), true);
183 public function testToggleStar()
185 $this->logInAs('admin');
186 $client = $this->getClient();
188 $content = $client->getContainer()
189 ->get('doctrine.orm.entity_manager')
190 ->getRepository('WallabagCoreBundle:Entry')
191 ->findOneByUrl($this->url
);
193 $client->request('GET', '/star/'.$content->getId());
195 $this->assertEquals(302, $client->getResponse()->getStatusCode());
197 $res = $client->getContainer()
198 ->get('doctrine.orm.entity_manager')
199 ->getRepository('WallabagCoreBundle:Entry')
200 ->findOneById($content->getId());
202 $this->assertEquals($res->isStarred(), true);
205 public function testDelete()
207 $this->logInAs('admin');
208 $client = $this->getClient();
210 $content = $client->getContainer()
211 ->get('doctrine.orm.entity_manager')
212 ->getRepository('WallabagCoreBundle:Entry')
213 ->findOneByUrl($this->url
);
215 $client->request('GET', '/delete/'.$content->getId());
217 $this->assertEquals(302, $client->getResponse()->getStatusCode());
219 $client->request('GET', '/delete/'.$content->getId());
221 $this->assertEquals(404, $client->getResponse()->getStatusCode());
224 public function testViewOtherUserEntry()
226 $this->logInAs('admin');
227 $client = $this->getClient();
229 $content = $client->getContainer()
230 ->get('doctrine.orm.entity_manager')
231 ->getRepository('WallabagCoreBundle:Entry')
232 ->findOneByUsernameAndNotArchived('bob');
234 $client->request('GET', '/view/'.$content->getId());
236 $this->assertEquals(403, $client->getResponse()->getStatusCode());
239 public function testFilterOnReadingTime()
241 $this->logInAs('admin');
242 $client = $this->getClient();
244 $crawler = $client->request('GET', '/unread/list');
246 $form = $crawler->filter('button[id=submit-filter]')->form();
249 'entry_filter[readingTime][right_number]' => 11,
250 'entry_filter[readingTime][left_number]' => 11,
253 $crawler = $client->submit($form, $data);
255 $this->assertCount(1, $crawler->filter('div[class=entry]'));
258 public function testFilterOnCreationDate()
260 $this->logInAs('admin');
261 $client = $this->getClient();
263 $crawler = $client->request('GET', '/unread/list');
265 $form = $crawler->filter('button[id=submit-filter]')->form();
268 'entry_filter[createdAt][left_date]' => date('d/m/Y'),
269 'entry_filter[createdAt][right_date]' => date('d/m/Y', strtotime('+1 day')),
272 $crawler = $client->submit($form, $data);
274 $this->assertCount(5, $crawler->filter('div[class=entry]'));
277 'entry_filter[createdAt][left_date]' => date('d/m/Y'),
278 'entry_filter[createdAt][right_date]' => date('d/m/Y'),
281 $crawler = $client->submit($form, $data);
283 $this->assertCount(5, $crawler->filter('div[class=entry]'));
286 'entry_filter[createdAt][left_date]' => '01/01/1970',
287 'entry_filter[createdAt][right_date]' => '01/01/1970',
290 $crawler = $client->submit($form, $data);
292 $this->assertCount(0, $crawler->filter('div[class=entry]'));
295 public function testPaginationWithFilter()
297 $this->logInAs('admin');
298 $client = $this->getClient();
299 $crawler = $client->request('GET', '/config');
301 $form = $crawler->filter('button[id=config_save]')->form();
304 'config[items_per_page]' => '1',
307 $client->submit($form, $data);
309 $parameters = '?entry_filter%5BreadingTime%5D%5Bleft_number%5D=&entry_filter%5BreadingTime%5D%5Bright_number%5D=';
311 $crawler = $client->request('GET', 'unread/list'.$parameters);
313 $this->assertContains($parameters, $client->getResponse()->getContent());
316 $crawler = $client->request('GET', '/config');
317 $form = $crawler->filter('button[id=config_save]')->form();
319 'config[items_per_page]' => '12',
321 $client->submit($form, $data);
324 public function testFilterOnDomainName()
326 $this->logInAs('admin');
327 $client = $this->getClient();
329 $crawler = $client->request('GET', '/unread/list');
330 $form = $crawler->filter('button[id=submit-filter]')->form();
332 'entry_filter[domainName]' => 'domain',
335 $crawler = $client->submit($form, $data);
336 $this->assertCount(5, $crawler->filter('div[class=entry]'));
338 $form = $crawler->filter('button[id=submit-filter]')->form();
340 'entry_filter[domainName]' => 'wallabag',
343 $crawler = $client->submit($form, $data);
344 $this->assertCount(0, $crawler->filter('div[class=entry]'));
347 public function testFilterOnStatus()
349 $this->logInAs('admin');
350 $client = $this->getClient();
352 $crawler = $client->request('GET', '/unread/list');
353 $form = $crawler->filter('button[id=submit-filter]')->form();
354 $form['entry_filter[isArchived]']->tick();
355 $form['entry_filter[isStarred]']->untick();
357 $crawler = $client->submit($form);
358 $this->assertCount(1, $crawler->filter('div[class=entry]'));
360 $form = $crawler->filter('button[id=submit-filter]')->form();
361 $form['entry_filter[isArchived]']->untick();
362 $form['entry_filter[isStarred]']->tick();
364 $crawler = $client->submit($form);
365 $this->assertCount(1, $crawler->filter('div[class=entry]'));
368 public function testPreviewPictureFilter()
370 $this->logInAs('admin');
371 $client = $this->getClient();
373 $crawler = $client->request('GET', '/unread/list');
374 $form = $crawler->filter('button[id=submit-filter]')->form();
375 $form['entry_filter[previewPicture]']->tick();
377 $crawler = $client->submit($form);
378 $this->assertCount(1, $crawler->filter('div[class=entry]'));
381 public function testFilterOnLanguage()
383 $this->logInAs('admin');
384 $client = $this->getClient();
386 $crawler = $client->request('GET', '/unread/list');
387 $form = $crawler->filter('button[id=submit-filter]')->form();
389 'entry_filter[language]' => 'fr',
392 $crawler = $client->submit($form, $data);
393 $this->assertCount(2, $crawler->filter('div[class=entry]'));
395 $form = $crawler->filter('button[id=submit-filter]')->form();
397 'entry_filter[language]' => 'en',
400 $crawler = $client->submit($form, $data);
401 $this->assertCount(2, $crawler->filter('div[class=entry]'));