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 testPostNewViaBookmarklet()
36 $this->logInAs('admin');
37 $client = $this->getClient();
39 $crawler = $client->request('GET', '/');
41 $this->assertCount(4, $crawler->filter('div[class=entry]'));
44 $crawler = $client->request('GET', '/bookmarklet', array('url' => $this->url
));
45 $this->assertEquals(302, $client->getResponse()->getStatusCode());
46 $crawler = $client->followRedirect();
47 $crawler = $client->request('GET', '/');
48 $this->assertCount(5, $crawler->filter('div[class=entry]'));
50 $em = $client->getContainer()
51 ->get('doctrine.orm.entity_manager');
53 ->getRepository('WallabagCoreBundle:Entry')
54 ->findOneByUrl($this->url
);
59 public function testPostNewEmpty()
61 $this->logInAs('admin');
62 $client = $this->getClient();
64 $crawler = $client->request('GET', '/new');
66 $this->assertEquals(200, $client->getResponse()->getStatusCode());
68 $form = $crawler->filter('button[type=submit]')->form();
70 $crawler = $client->submit($form);
72 $this->assertEquals(200, $client->getResponse()->getStatusCode());
73 $this->assertCount(1, $alert = $crawler->filter('form ul li')->extract(array('_text')));
74 $this->assertEquals('This value should not be blank.', $alert[0]);
78 * This test will require an internet connection.
80 public function testPostNewOk()
82 $this->logInAs('admin');
83 $client = $this->getClient();
85 $crawler = $client->request('GET', '/new');
87 $this->assertEquals(200, $client->getResponse()->getStatusCode());
89 $form = $crawler->filter('button[type=submit]')->form();
92 'entry[url]' => $this->url
,
95 $client->submit($form, $data);
97 $this->assertEquals(302, $client->getResponse()->getStatusCode());
99 $crawler = $client->followRedirect();
101 $this->assertGreaterThan(1, $alert = $crawler->filter('h2 a')->extract(array('_text')));
102 $this->assertContains('Google', $alert[0]);
106 * This test will require an internet connection.
108 public function testPostNewThatWillBeTaggued()
110 $this->logInAs('admin');
111 $client = $this->getClient();
113 $crawler = $client->request('GET', '/new');
115 $this->assertEquals(200, $client->getResponse()->getStatusCode());
117 $form = $crawler->filter('button[type=submit]')->form();
120 'entry[url]' => $url = 'https://github.com/wallabag/wallabag',
123 $client->submit($form, $data);
125 $this->assertEquals(302, $client->getResponse()->getStatusCode());
127 $crawler = $client->followRedirect();
129 $em = $client->getContainer()
130 ->get('doctrine.orm.entity_manager');
132 ->getRepository('WallabagCoreBundle:Entry')
133 ->findOneByUrl($url);
134 $this->assertCount(1, $entry->getTags());
140 public function testArchive()
142 $this->logInAs('admin');
143 $client = $this->getClient();
145 $client->request('GET', '/archive/list');
147 $this->assertEquals(200, $client->getResponse()->getStatusCode());
150 public function testStarred()
152 $this->logInAs('admin');
153 $client = $this->getClient();
155 $client->request('GET', '/starred/list');
157 $this->assertEquals(200, $client->getResponse()->getStatusCode());
161 * @depends testPostNewOk
163 public function testView()
165 $this->logInAs('admin');
166 $client = $this->getClient();
168 $content = $client->getContainer()
169 ->get('doctrine.orm.entity_manager')
170 ->getRepository('WallabagCoreBundle:Entry')
171 ->findOneByUrl($this->url
);
173 $client->request('GET', '/view/'.$content->getId());
175 $this->assertEquals(200, $client->getResponse()->getStatusCode());
176 $this->assertContains($content->getTitle(), $client->getResponse()->getContent());
179 public function testEdit()
181 $this->logInAs('admin');
182 $client = $this->getClient();
184 $content = $client->getContainer()
185 ->get('doctrine.orm.entity_manager')
186 ->getRepository('WallabagCoreBundle:Entry')
187 ->findOneByUrl($this->url
);
189 $crawler = $client->request('GET', '/edit/'.$content->getId());
191 $this->assertEquals(200, $client->getResponse()->getStatusCode());
193 $this->assertCount(1, $crawler->filter('input[id=entry_title]'));
194 $this->assertCount(1, $crawler->filter('button[id=entry_save]'));
197 public function testEditUpdate()
199 $this->logInAs('admin');
200 $client = $this->getClient();
202 $content = $client->getContainer()
203 ->get('doctrine.orm.entity_manager')
204 ->getRepository('WallabagCoreBundle:Entry')
205 ->findOneByUrl($this->url
);
207 $crawler = $client->request('GET', '/edit/'.$content->getId());
209 $this->assertEquals(200, $client->getResponse()->getStatusCode());
211 $form = $crawler->filter('button[type=submit]')->form();
214 'entry[title]' => 'My updated title hehe :)',
217 $client->submit($form, $data);
219 $this->assertEquals(302, $client->getResponse()->getStatusCode());
221 $crawler = $client->followRedirect();
223 $this->assertGreaterThan(1, $alert = $crawler->filter('div[id=article] h1')->extract(array('_text')));
224 $this->assertContains('My updated title hehe :)', $alert[0]);
227 public function testToggleArchive()
229 $this->logInAs('admin');
230 $client = $this->getClient();
232 $content = $client->getContainer()
233 ->get('doctrine.orm.entity_manager')
234 ->getRepository('WallabagCoreBundle:Entry')
235 ->findOneByUrl($this->url
);
237 $client->request('GET', '/archive/'.$content->getId());
239 $this->assertEquals(302, $client->getResponse()->getStatusCode());
241 $res = $client->getContainer()
242 ->get('doctrine.orm.entity_manager')
243 ->getRepository('WallabagCoreBundle:Entry')
244 ->find($content->getId());
246 $this->assertEquals($res->isArchived(), true);
249 public function testToggleStar()
251 $this->logInAs('admin');
252 $client = $this->getClient();
254 $content = $client->getContainer()
255 ->get('doctrine.orm.entity_manager')
256 ->getRepository('WallabagCoreBundle:Entry')
257 ->findOneByUrl($this->url
);
259 $client->request('GET', '/star/'.$content->getId());
261 $this->assertEquals(302, $client->getResponse()->getStatusCode());
263 $res = $client->getContainer()
264 ->get('doctrine.orm.entity_manager')
265 ->getRepository('WallabagCoreBundle:Entry')
266 ->findOneById($content->getId());
268 $this->assertEquals($res->isStarred(), true);
271 public function testDelete()
273 $this->logInAs('admin');
274 $client = $this->getClient();
276 $content = $client->getContainer()
277 ->get('doctrine.orm.entity_manager')
278 ->getRepository('WallabagCoreBundle:Entry')
279 ->findOneByUrl($this->url
);
281 $client->request('GET', '/delete/'.$content->getId());
283 $this->assertEquals(302, $client->getResponse()->getStatusCode());
285 $client->request('GET', '/delete/'.$content->getId());
287 $this->assertEquals(404, $client->getResponse()->getStatusCode());
290 public function testViewOtherUserEntry()
292 $this->logInAs('admin');
293 $client = $this->getClient();
295 $content = $client->getContainer()
296 ->get('doctrine.orm.entity_manager')
297 ->getRepository('WallabagCoreBundle:Entry')
298 ->findOneByUsernameAndNotArchived('bob');
300 $client->request('GET', '/view/'.$content->getId());
302 $this->assertEquals(403, $client->getResponse()->getStatusCode());
305 public function testFilterOnReadingTime()
307 $this->logInAs('admin');
308 $client = $this->getClient();
310 $crawler = $client->request('GET', '/unread/list');
312 $form = $crawler->filter('button[id=submit-filter]')->form();
315 'entry_filter[readingTime][right_number]' => 11,
316 'entry_filter[readingTime][left_number]' => 11,
319 $crawler = $client->submit($form, $data);
321 $this->assertCount(1, $crawler->filter('div[class=entry]'));
324 public function testFilterOnCreationDate()
326 $this->logInAs('admin');
327 $client = $this->getClient();
329 $crawler = $client->request('GET', '/unread/list');
331 $form = $crawler->filter('button[id=submit-filter]')->form();
334 'entry_filter[createdAt][left_date]' => date('d/m/Y'),
335 'entry_filter[createdAt][right_date]' => date('d/m/Y', strtotime('+1 day')),
338 $crawler = $client->submit($form, $data);
340 $this->assertCount(5, $crawler->filter('div[class=entry]'));
343 'entry_filter[createdAt][left_date]' => date('d/m/Y'),
344 'entry_filter[createdAt][right_date]' => date('d/m/Y'),
347 $crawler = $client->submit($form, $data);
349 $this->assertCount(5, $crawler->filter('div[class=entry]'));
352 'entry_filter[createdAt][left_date]' => '01/01/1970',
353 'entry_filter[createdAt][right_date]' => '01/01/1970',
356 $crawler = $client->submit($form, $data);
358 $this->assertCount(0, $crawler->filter('div[class=entry]'));
361 public function testPaginationWithFilter()
363 $this->logInAs('admin');
364 $client = $this->getClient();
365 $crawler = $client->request('GET', '/config');
367 $form = $crawler->filter('button[id=config_save]')->form();
370 'config[items_per_page]' => '1',
373 $client->submit($form, $data);
375 $parameters = '?entry_filter%5BreadingTime%5D%5Bleft_number%5D=&entry_filter%5BreadingTime%5D%5Bright_number%5D=';
377 $crawler = $client->request('GET', 'unread/list'.$parameters);
379 $this->assertContains($parameters, $client->getResponse()->getContent());
382 $crawler = $client->request('GET', '/config');
383 $form = $crawler->filter('button[id=config_save]')->form();
385 'config[items_per_page]' => '12',
387 $client->submit($form, $data);
390 public function testFilterOnDomainName()
392 $this->logInAs('admin');
393 $client = $this->getClient();
395 $crawler = $client->request('GET', '/unread/list');
396 $form = $crawler->filter('button[id=submit-filter]')->form();
398 'entry_filter[domainName]' => 'domain',
401 $crawler = $client->submit($form, $data);
402 $this->assertCount(5, $crawler->filter('div[class=entry]'));
404 $form = $crawler->filter('button[id=submit-filter]')->form();
406 'entry_filter[domainName]' => 'wallabag',
409 $crawler = $client->submit($form, $data);
410 $this->assertCount(0, $crawler->filter('div[class=entry]'));
413 public function testFilterOnStatus()
415 $this->logInAs('admin');
416 $client = $this->getClient();
418 $crawler = $client->request('GET', '/unread/list');
419 $form = $crawler->filter('button[id=submit-filter]')->form();
420 $form['entry_filter[isArchived]']->tick();
421 $form['entry_filter[isStarred]']->untick();
423 $crawler = $client->submit($form);
424 $this->assertCount(1, $crawler->filter('div[class=entry]'));
426 $form = $crawler->filter('button[id=submit-filter]')->form();
427 $form['entry_filter[isArchived]']->untick();
428 $form['entry_filter[isStarred]']->tick();
430 $crawler = $client->submit($form);
431 $this->assertCount(1, $crawler->filter('div[class=entry]'));
434 public function testPreviewPictureFilter()
436 $this->logInAs('admin');
437 $client = $this->getClient();
439 $crawler = $client->request('GET', '/unread/list');
440 $form = $crawler->filter('button[id=submit-filter]')->form();
441 $form['entry_filter[previewPicture]']->tick();
443 $crawler = $client->submit($form);
444 $this->assertCount(1, $crawler->filter('div[class=entry]'));
447 public function testFilterOnLanguage()
449 $this->logInAs('admin');
450 $client = $this->getClient();
452 $crawler = $client->request('GET', '/unread/list');
453 $form = $crawler->filter('button[id=submit-filter]')->form();
455 'entry_filter[language]' => 'fr',
458 $crawler = $client->submit($form, $data);
459 $this->assertCount(2, $crawler->filter('div[class=entry]'));
461 $form = $crawler->filter('button[id=submit-filter]')->form();
463 'entry_filter[language]' => 'en',
466 $crawler = $client->submit($form, $data);
467 $this->assertCount(2, $crawler->filter('div[class=entry]'));