]> git.immae.eu Git - github/wallabag/wallabag.git/blame - src/Wallabag/CoreBundle/Tests/Controller/EntryControllerTest.php
Merge pull request #1468 from wallabag/v2-fix-detect-theme
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Tests / Controller / EntryControllerTest.php
CommitLineData
93fd4692
NL
1<?php
2
ad4d1caa 3namespace Wallabag\CoreBundle\Tests\Controller;
93fd4692 4
769e19dc 5use Wallabag\CoreBundle\Tests\WallabagCoreTestCase;
93fd4692 6
769e19dc 7class EntryControllerTest extends WallabagCoreTestCase
93fd4692 8{
02d17813
JB
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';
10
3b815d2d
J
11 public function testLogin()
12 {
13 $client = $this->getClient();
14
eb3bd7ef 15 $client->request('GET', '/new');
3b815d2d
J
16
17 $this->assertEquals(302, $client->getResponse()->getStatusCode());
18 $this->assertContains('login', $client->getResponse()->headers->get('location'));
19 }
20
9c0c8820 21 public function testGetNew()
93fd4692 22 {
eb3bd7ef 23 $this->logInAs('admin');
3b815d2d 24 $client = $this->getClient();
93fd4692 25
aa6e27cf 26 $crawler = $client->request('GET', '/new');
93fd4692
NL
27
28 $this->assertEquals(200, $client->getResponse()->getStatusCode());
9c0c8820
J
29
30 $this->assertCount(1, $crawler->filter('input[type=url]'));
31 $this->assertCount(1, $crawler->filter('button[type=submit]'));
32 }
33
34 public function testPostNewEmpty()
35 {
eb3bd7ef 36 $this->logInAs('admin');
3b815d2d 37 $client = $this->getClient();
9c0c8820
J
38
39 $crawler = $client->request('GET', '/new');
40
41 $this->assertEquals(200, $client->getResponse()->getStatusCode());
42
43 $form = $crawler->filter('button[type=submit]')->form();
44
45 $crawler = $client->submit($form);
46
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]);
50 }
51
52 public function testPostNewOk()
53 {
eb3bd7ef 54 $this->logInAs('admin');
3b815d2d 55 $client = $this->getClient();
9c0c8820
J
56
57 $crawler = $client->request('GET', '/new');
58
59 $this->assertEquals(200, $client->getResponse()->getStatusCode());
60
61 $form = $crawler->filter('button[type=submit]')->form();
62
63 $data = array(
02d17813 64 'entry[url]' => $this->url,
9c0c8820
J
65 );
66
67 $client->submit($form, $data);
68
69 $this->assertEquals(302, $client->getResponse()->getStatusCode());
70
71 $crawler = $client->followRedirect();
72
3b815d2d 73 $this->assertGreaterThan(1, $alert = $crawler->filter('h2 a')->extract(array('_text')));
34c06cab 74 $this->assertContains('Google', $alert[0]);
9c0c8820
J
75 }
76
77 public function testArchive()
78 {
eb3bd7ef 79 $this->logInAs('admin');
3b815d2d 80 $client = $this->getClient();
9c0c8820 81
9fb6ac83 82 $client->request('GET', '/archive/list');
9c0c8820
J
83
84 $this->assertEquals(200, $client->getResponse()->getStatusCode());
85 }
86
87 public function testStarred()
88 {
eb3bd7ef 89 $this->logInAs('admin');
3b815d2d 90 $client = $this->getClient();
9c0c8820 91
9fb6ac83 92 $client->request('GET', '/starred/list');
9c0c8820
J
93
94 $this->assertEquals(200, $client->getResponse()->getStatusCode());
95 }
96
97 public function testView()
98 {
eb3bd7ef 99 $this->logInAs('admin');
3b815d2d 100 $client = $this->getClient();
9c0c8820
J
101
102 $content = $client->getContainer()
103 ->get('doctrine.orm.entity_manager')
104 ->getRepository('WallabagCoreBundle:Entry')
02d17813 105 ->findOneByUrl($this->url);
9c0c8820 106
eb3bd7ef 107 $client->request('GET', '/view/'.$content->getId());
9c0c8820
J
108
109 $this->assertEquals(200, $client->getResponse()->getStatusCode());
110 $this->assertContains($content->getTitle(), $client->getResponse()->getContent());
93fd4692 111 }
eb3bd7ef 112
82d6d9cb
JB
113 public function testEdit()
114 {
115 $this->logInAs('admin');
116 $client = $this->getClient();
117
118 $content = $client->getContainer()
119 ->get('doctrine.orm.entity_manager')
120 ->getRepository('WallabagCoreBundle:Entry')
02d17813 121 ->findOneByUrl($this->url);
82d6d9cb
JB
122
123 $crawler = $client->request('GET', '/edit/'.$content->getId());
124
125 $this->assertEquals(200, $client->getResponse()->getStatusCode());
126
127 $this->assertCount(1, $crawler->filter('input[id=entry_title]'));
128 $this->assertCount(1, $crawler->filter('button[id=entry_save]'));
129 }
130
131 public function testEditUpdate()
132 {
133 $this->logInAs('admin');
134 $client = $this->getClient();
135
136 $content = $client->getContainer()
137 ->get('doctrine.orm.entity_manager')
138 ->getRepository('WallabagCoreBundle:Entry')
02d17813 139 ->findOneByUrl($this->url);
82d6d9cb
JB
140
141 $crawler = $client->request('GET', '/edit/'.$content->getId());
142
143 $this->assertEquals(200, $client->getResponse()->getStatusCode());
144
145 $form = $crawler->filter('button[type=submit]')->form();
146
147 $data = array(
148 'entry[title]' => 'My updated title hehe :)',
149 );
150
151 $client->submit($form, $data);
152
153 $this->assertEquals(302, $client->getResponse()->getStatusCode());
154
155 $crawler = $client->followRedirect();
156
157 $this->assertGreaterThan(1, $alert = $crawler->filter('div[id=article] h1')->extract(array('_text')));
158 $this->assertContains('My updated title hehe :)', $alert[0]);
159 }
160
eb3bd7ef
J
161 public function testToggleArchive()
162 {
163 $this->logInAs('admin');
164 $client = $this->getClient();
165
166 $content = $client->getContainer()
167 ->get('doctrine.orm.entity_manager')
168 ->getRepository('WallabagCoreBundle:Entry')
02d17813 169 ->findOneByUrl($this->url);
eb3bd7ef
J
170
171 $client->request('GET', '/archive/'.$content->getId());
172
173 $this->assertEquals(302, $client->getResponse()->getStatusCode());
174
175 $res = $client->getContainer()
176 ->get('doctrine.orm.entity_manager')
177 ->getRepository('WallabagCoreBundle:Entry')
159986c4 178 ->find($content->getId());
eb3bd7ef
J
179
180 $this->assertEquals($res->isArchived(), true);
181 }
182
183 public function testToggleStar()
184 {
185 $this->logInAs('admin');
186 $client = $this->getClient();
187
188 $content = $client->getContainer()
189 ->get('doctrine.orm.entity_manager')
190 ->getRepository('WallabagCoreBundle:Entry')
02d17813 191 ->findOneByUrl($this->url);
eb3bd7ef
J
192
193 $client->request('GET', '/star/'.$content->getId());
194
195 $this->assertEquals(302, $client->getResponse()->getStatusCode());
196
197 $res = $client->getContainer()
198 ->get('doctrine.orm.entity_manager')
199 ->getRepository('WallabagCoreBundle:Entry')
200 ->findOneById($content->getId());
201
202 $this->assertEquals($res->isStarred(), true);
203 }
204
205 public function testDelete()
206 {
207 $this->logInAs('admin');
208 $client = $this->getClient();
209
210 $content = $client->getContainer()
211 ->get('doctrine.orm.entity_manager')
212 ->getRepository('WallabagCoreBundle:Entry')
02d17813 213 ->findOneByUrl($this->url);
eb3bd7ef
J
214
215 $client->request('GET', '/delete/'.$content->getId());
216
217 $this->assertEquals(302, $client->getResponse()->getStatusCode());
218
1d147791 219 $client->request('GET', '/delete/'.$content->getId());
eb3bd7ef 220
1d147791 221 $this->assertEquals(404, $client->getResponse()->getStatusCode());
eb3bd7ef 222 }
3d2b2d62
J
223
224 public function testViewOtherUserEntry()
225 {
159986c4 226 $this->logInAs('admin');
3d2b2d62
J
227 $client = $this->getClient();
228
229 $content = $client->getContainer()
230 ->get('doctrine.orm.entity_manager')
231 ->getRepository('WallabagCoreBundle:Entry')
159986c4 232 ->findOneByUsernameAndNotArchived('bob');
3d2b2d62 233
159986c4 234 $client->request('GET', '/view/'.$content->getId());
3d2b2d62
J
235
236 $this->assertEquals(403, $client->getResponse()->getStatusCode());
237 }
26864574 238
3f357ee2 239 public function testFilterOnReadingTime()
26864574
NL
240 {
241 $this->logInAs('admin');
242 $client = $this->getClient();
243
244 $crawler = $client->request('GET', '/unread/list');
245
246 $form = $crawler->filter('button[id=submit-filter]')->form();
247
248 $data = array(
249 'entry_filter[readingTime][right_number]' => 11,
8ce32af6 250 'entry_filter[readingTime][left_number]' => 11,
26864574
NL
251 );
252
253 $crawler = $client->submit($form, $data);
254
255 $this->assertCount(1, $crawler->filter('div[class=entry]'));
256 }
ab2c93c7 257
3f357ee2
NL
258 public function testFilterOnCreationDate()
259 {
260 $this->logInAs('admin');
261 $client = $this->getClient();
262
263 $crawler = $client->request('GET', '/unread/list');
264
265 $form = $crawler->filter('button[id=submit-filter]')->form();
266
267 $data = array(
268 'entry_filter[createdAt][left_date]' => date('d/m/Y'),
8ce32af6 269 'entry_filter[createdAt][right_date]' => date('d/m/Y', strtotime('+1 day')),
3f357ee2
NL
270 );
271
272 $crawler = $client->submit($form, $data);
273
e1779760 274 $this->assertCount(5, $crawler->filter('div[class=entry]'));
3f357ee2 275
f90af145
JB
276 $data = array(
277 'entry_filter[createdAt][left_date]' => date('d/m/Y'),
278 'entry_filter[createdAt][right_date]' => date('d/m/Y'),
279 );
280
281 $crawler = $client->submit($form, $data);
282
283 $this->assertCount(5, $crawler->filter('div[class=entry]'));
284
3f357ee2
NL
285 $data = array(
286 'entry_filter[createdAt][left_date]' => '01/01/1970',
8ce32af6 287 'entry_filter[createdAt][right_date]' => '01/01/1970',
3f357ee2
NL
288 );
289
290 $crawler = $client->submit($form, $data);
291
292 $this->assertCount(0, $crawler->filter('div[class=entry]'));
3f357ee2
NL
293 }
294
ab2c93c7
NL
295 public function testPaginationWithFilter()
296 {
297 $this->logInAs('admin');
298 $client = $this->getClient();
ab2c93c7
NL
299 $crawler = $client->request('GET', '/config');
300
301 $form = $crawler->filter('button[id=config_save]')->form();
302
303 $data = array(
304 'config[items_per_page]' => '1',
305 );
306
307 $client->submit($form, $data);
308
309 $parameters = '?entry_filter%5BreadingTime%5D%5Bleft_number%5D=&amp;entry_filter%5BreadingTime%5D%5Bright_number%5D=';
310
311 $crawler = $client->request('GET', 'unread/list'.$parameters);
312
313 $this->assertContains($parameters, $client->getResponse()->getContent());
e1779760
NL
314
315 // reset pagination
316 $crawler = $client->request('GET', '/config');
317 $form = $crawler->filter('button[id=config_save]')->form();
318 $data = array(
319 'config[items_per_page]' => '12',
320 );
321 $client->submit($form, $data);
ab2c93c7 322 }
443cecd2
NL
323
324 public function testFilterOnDomainName()
325 {
326 $this->logInAs('admin');
327 $client = $this->getClient();
328
329 $crawler = $client->request('GET', '/unread/list');
330 $form = $crawler->filter('button[id=submit-filter]')->form();
331 $data = array(
02d17813 332 'entry_filter[domainName]' => 'domain',
443cecd2
NL
333 );
334
335 $crawler = $client->submit($form, $data);
02d17813 336 $this->assertCount(5, $crawler->filter('div[class=entry]'));
443cecd2
NL
337
338 $form = $crawler->filter('button[id=submit-filter]')->form();
339 $data = array(
8ce32af6 340 'entry_filter[domainName]' => 'wallabag',
443cecd2
NL
341 );
342
343 $crawler = $client->submit($form, $data);
344 $this->assertCount(0, $crawler->filter('div[class=entry]'));
345 }
e1779760
NL
346
347 public function testFilterOnStatus()
348 {
349 $this->logInAs('admin');
350 $client = $this->getClient();
351
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();
356
357 $crawler = $client->submit($form);
159986c4 358 $this->assertCount(1, $crawler->filter('div[class=entry]'));
e1779760
NL
359
360 $form = $crawler->filter('button[id=submit-filter]')->form();
361 $form['entry_filter[isArchived]']->untick();
362 $form['entry_filter[isStarred]']->tick();
363
364 $crawler = $client->submit($form);
02d17813 365 $this->assertCount(1, $crawler->filter('div[class=entry]'));
e1779760 366 }
497e0cad
NL
367
368 public function testPreviewPictureFilter()
369 {
370 $this->logInAs('admin');
371 $client = $this->getClient();
372
373 $crawler = $client->request('GET', '/unread/list');
374 $form = $crawler->filter('button[id=submit-filter]')->form();
375 $form['entry_filter[previewPicture]']->tick();
376
377 $crawler = $client->submit($form);
378 $this->assertCount(1, $crawler->filter('div[class=entry]'));
379 }
d4ebe5c5
JB
380
381 public function testFilterOnLanguage()
382 {
383 $this->logInAs('admin');
384 $client = $this->getClient();
385
386 $crawler = $client->request('GET', '/unread/list');
387 $form = $crawler->filter('button[id=submit-filter]')->form();
388 $data = array(
159986c4 389 'entry_filter[language]' => 'fr',
d4ebe5c5
JB
390 );
391
392 $crawler = $client->submit($form, $data);
02d17813 393 $this->assertCount(2, $crawler->filter('div[class=entry]'));
d4ebe5c5
JB
394
395 $form = $crawler->filter('button[id=submit-filter]')->form();
396 $data = array(
397 'entry_filter[language]' => 'en',
398 );
399
400 $crawler = $client->submit($form, $data);
401 $this->assertCount(2, $crawler->filter('div[class=entry]'));
402 }
93fd4692 403}