diff options
author | Jeremy <jeremy.benoist@gmail.com> | 2015-03-28 21:43:49 +0100 |
---|---|---|
committer | Jeremy <jeremy.benoist@gmail.com> | 2015-03-31 22:48:00 +0200 |
commit | 371ac69a6bd6325929e4efee7958682a6b1666f7 (patch) | |
tree | 781e6aa505f3c163e8385a662e1befc2f38885a3 /src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php | |
parent | 2385f891e5992e84501d4cd47565a7bf0af14331 (diff) | |
download | wallabag-371ac69a6bd6325929e4efee7958682a6b1666f7.tar.gz wallabag-371ac69a6bd6325929e4efee7958682a6b1666f7.tar.zst wallabag-371ac69a6bd6325929e4efee7958682a6b1666f7.zip |
Add tests
and fix few mistakes
Diffstat (limited to 'src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php')
-rw-r--r-- | src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php new file mode 100644 index 00000000..8f627b4b --- /dev/null +++ b/src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php | |||
@@ -0,0 +1,126 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\CoreBundle\Tests\Controller; | ||
4 | |||
5 | use Wallabag\CoreBundle\Tests\WallabagTestCase; | ||
6 | |||
7 | class RssControllerTest extends WallabagTestCase | ||
8 | { | ||
9 | public function validateDom($xml, $nb = null) | ||
10 | { | ||
11 | $doc = new \DOMDocument(); | ||
12 | $doc->loadXML($xml); | ||
13 | |||
14 | $xpath = new \DOMXpath($doc); | ||
15 | |||
16 | if (null === $nb) { | ||
17 | $this->assertGreaterThan(0, $xpath->query('//item')->length); | ||
18 | } else { | ||
19 | $this->assertEquals($nb, $xpath->query('//item')->length); | ||
20 | } | ||
21 | |||
22 | $this->assertEquals(1, $xpath->query('/rss')->length); | ||
23 | $this->assertEquals(1, $xpath->query('/rss/channel')->length); | ||
24 | |||
25 | foreach ($xpath->query('//item') as $item) { | ||
26 | $this->assertEquals(1, $xpath->query('title', $item)->length); | ||
27 | $this->assertEquals(1, $xpath->query('source', $item)->length); | ||
28 | $this->assertEquals(1, $xpath->query('link', $item)->length); | ||
29 | $this->assertEquals(1, $xpath->query('guid', $item)->length); | ||
30 | $this->assertEquals(1, $xpath->query('pubDate', $item)->length); | ||
31 | $this->assertEquals(1, $xpath->query('description', $item)->length); | ||
32 | } | ||
33 | } | ||
34 | |||
35 | public function dataForBadUrl() | ||
36 | { | ||
37 | return array( | ||
38 | array( | ||
39 | '/admin/YZIOAUZIAO/unread.xml' | ||
40 | ), | ||
41 | array( | ||
42 | '/wallace/YZIOAUZIAO/starred.xml' | ||
43 | ), | ||
44 | array( | ||
45 | '/wallace/YZIOAUZIAO/archives.xml' | ||
46 | ), | ||
47 | ); | ||
48 | } | ||
49 | |||
50 | /** | ||
51 | * @dataProvider dataForBadUrl | ||
52 | */ | ||
53 | public function testBadUrl($url) | ||
54 | { | ||
55 | $client = $this->getClient(); | ||
56 | |||
57 | $client->request('GET', $url); | ||
58 | |||
59 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | ||
60 | } | ||
61 | |||
62 | public function testUnread() | ||
63 | { | ||
64 | $client = $this->getClient(); | ||
65 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
66 | $user = $em | ||
67 | ->getRepository('WallabagCoreBundle:User') | ||
68 | ->findOneByUsername('admin'); | ||
69 | |||
70 | $config = $user->getConfig(); | ||
71 | $config->setRssToken('SUPERTOKEN'); | ||
72 | $config->setRssLimit(2); | ||
73 | $em->persist($config); | ||
74 | $em->flush(); | ||
75 | |||
76 | $client->request('GET', '/admin/SUPERTOKEN/unread.xml'); | ||
77 | |||
78 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
79 | |||
80 | $this->validateDom($client->getResponse()->getContent(), 2); | ||
81 | } | ||
82 | |||
83 | public function testStarred() | ||
84 | { | ||
85 | $client = $this->getClient(); | ||
86 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
87 | $user = $em | ||
88 | ->getRepository('WallabagCoreBundle:User') | ||
89 | ->findOneByUsername('admin'); | ||
90 | |||
91 | $config = $user->getConfig(); | ||
92 | $config->setRssToken('SUPERTOKEN'); | ||
93 | $config->setRssLimit(1); | ||
94 | $em->persist($config); | ||
95 | $em->flush(); | ||
96 | |||
97 | $client = $this->getClient(); | ||
98 | $client->request('GET', '/admin/SUPERTOKEN/starred.xml'); | ||
99 | |||
100 | $this->assertEquals(200, $client->getResponse()->getStatusCode(), 1); | ||
101 | |||
102 | $this->validateDom($client->getResponse()->getContent()); | ||
103 | } | ||
104 | |||
105 | public function testArchives() | ||
106 | { | ||
107 | $client = $this->getClient(); | ||
108 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
109 | $user = $em | ||
110 | ->getRepository('WallabagCoreBundle:User') | ||
111 | ->findOneByUsername('admin'); | ||
112 | |||
113 | $config = $user->getConfig(); | ||
114 | $config->setRssToken('SUPERTOKEN'); | ||
115 | $config->setRssLimit(null); | ||
116 | $em->persist($config); | ||
117 | $em->flush(); | ||
118 | |||
119 | $client = $this->getClient(); | ||
120 | $client->request('GET', '/admin/SUPERTOKEN/archive.xml'); | ||
121 | |||
122 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
123 | |||
124 | $this->validateDom($client->getResponse()->getContent()); | ||
125 | } | ||
126 | } | ||