]>
Commit | Line | Data |
---|---|---|
558d9aab JB |
1 | <?php |
2 | ||
3 | namespace Wallabag\CoreBundle\Tests\Helper; | |
4 | ||
0c5bcd82 KG |
5 | use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; |
6 | use Psr\Log\NullLogger; | |
7 | ||
558d9aab | 8 | use Wallabag\CoreBundle\Entity\Entry; |
1210dae1 | 9 | use Wallabag\UserBundle\Entity\User; |
558d9aab JB |
10 | use Wallabag\CoreBundle\Helper\ContentProxy; |
11 | ||
8a493541 | 12 | class ContentProxyTest extends \PHPUnit_Framework_TestCase |
558d9aab JB |
13 | { |
14 | public function testWithEmptyContent() | |
15 | { | |
f530f7f5 KG |
16 | $tagger = $this->getTaggerMock(); |
17 | $tagger->expects($this->once()) | |
18 | ->method('tag'); | |
19 | ||
558d9aab JB |
20 | $graby = $this->getMockBuilder('Graby\Graby') |
21 | ->setMethods(array('fetchContent')) | |
22 | ->disableOriginalConstructor() | |
23 | ->getMock(); | |
24 | ||
25 | $graby->expects($this->any()) | |
26 | ->method('fetchContent') | |
98f0929f JB |
27 | ->willReturn(array( |
28 | 'html' => false, | |
29 | 'title' => '', | |
30 | 'url' => '', | |
31 | 'content_type' => '', | |
32 | 'language' => '', | |
33 | )); | |
558d9aab | 34 | |
0c5bcd82 | 35 | $proxy = new ContentProxy($graby, $tagger, $this->getLogger()); |
558d9aab JB |
36 | $entry = $proxy->updateEntry(new Entry(new User()), 'http://0.0.0.0'); |
37 | ||
38 | $this->assertEquals('http://0.0.0.0', $entry->getUrl()); | |
39 | $this->assertEmpty($entry->getTitle()); | |
40 | $this->assertEquals('<p>Unable to retrieve readable content.</p>', $entry->getContent()); | |
41 | $this->assertEmpty($entry->getPreviewPicture()); | |
42 | $this->assertEmpty($entry->getMimetype()); | |
98f0929f | 43 | $this->assertEmpty($entry->getLanguage()); |
da3d4998 JB |
44 | $this->assertEquals(0.0, $entry->getReadingTime()); |
45 | $this->assertEquals('0.0.0.0', $entry->getDomainName()); | |
558d9aab JB |
46 | } |
47 | ||
48 | public function testWithEmptyContentButOG() | |
49 | { | |
f530f7f5 KG |
50 | $tagger = $this->getTaggerMock(); |
51 | $tagger->expects($this->once()) | |
52 | ->method('tag'); | |
53 | ||
558d9aab JB |
54 | $graby = $this->getMockBuilder('Graby\Graby') |
55 | ->setMethods(array('fetchContent')) | |
56 | ->disableOriginalConstructor() | |
57 | ->getMock(); | |
58 | ||
59 | $graby->expects($this->any()) | |
60 | ->method('fetchContent') | |
98f0929f JB |
61 | ->willReturn(array( |
62 | 'html' => false, | |
63 | 'title' => '', | |
64 | 'url' => '', | |
65 | 'content_type' => '', | |
66 | 'language' => '', | |
67 | 'open_graph' => array( | |
68 | 'og_title' => 'my title', | |
69 | 'og_description' => 'desc', | |
70 | ), | |
71 | )); | |
558d9aab | 72 | |
0c5bcd82 | 73 | $proxy = new ContentProxy($graby, $tagger, $this->getLogger()); |
da3d4998 | 74 | $entry = $proxy->updateEntry(new Entry(new User()), 'http://domain.io'); |
558d9aab | 75 | |
da3d4998 | 76 | $this->assertEquals('http://domain.io', $entry->getUrl()); |
558d9aab JB |
77 | $this->assertEquals('my title', $entry->getTitle()); |
78 | $this->assertEquals('<p>Unable to retrieve readable content.</p><p><i>But we found a short description: </i></p>desc', $entry->getContent()); | |
79 | $this->assertEmpty($entry->getPreviewPicture()); | |
98f0929f | 80 | $this->assertEmpty($entry->getLanguage()); |
558d9aab | 81 | $this->assertEmpty($entry->getMimetype()); |
da3d4998 JB |
82 | $this->assertEquals(0.0, $entry->getReadingTime()); |
83 | $this->assertEquals('domain.io', $entry->getDomainName()); | |
558d9aab JB |
84 | } |
85 | ||
86 | public function testWithContent() | |
87 | { | |
f530f7f5 KG |
88 | $tagger = $this->getTaggerMock(); |
89 | $tagger->expects($this->once()) | |
90 | ->method('tag'); | |
91 | ||
558d9aab JB |
92 | $graby = $this->getMockBuilder('Graby\Graby') |
93 | ->setMethods(array('fetchContent')) | |
94 | ->disableOriginalConstructor() | |
95 | ->getMock(); | |
96 | ||
97 | $graby->expects($this->any()) | |
98 | ->method('fetchContent') | |
99 | ->willReturn(array( | |
da3d4998 | 100 | 'html' => str_repeat('this is my content', 325), |
558d9aab JB |
101 | 'title' => 'this is my title', |
102 | 'url' => 'http://1.1.1.1', | |
103 | 'content_type' => 'text/html', | |
98f0929f | 104 | 'language' => 'fr', |
558d9aab JB |
105 | 'open_graph' => array( |
106 | 'og_title' => 'my OG title', | |
107 | 'og_description' => 'OG desc', | |
f1e29e69 JB |
108 | 'og_image' => 'http://3.3.3.3/cover.jpg', |
109 | ), | |
558d9aab JB |
110 | )); |
111 | ||
0c5bcd82 | 112 | $proxy = new ContentProxy($graby, $tagger, $this->getLogger()); |
558d9aab JB |
113 | $entry = $proxy->updateEntry(new Entry(new User()), 'http://0.0.0.0'); |
114 | ||
115 | $this->assertEquals('http://1.1.1.1', $entry->getUrl()); | |
116 | $this->assertEquals('this is my title', $entry->getTitle()); | |
da3d4998 | 117 | $this->assertContains('this is my content', $entry->getContent()); |
558d9aab JB |
118 | $this->assertEquals('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture()); |
119 | $this->assertEquals('text/html', $entry->getMimetype()); | |
98f0929f | 120 | $this->assertEquals('fr', $entry->getLanguage()); |
da3d4998 JB |
121 | $this->assertEquals(4.0, $entry->getReadingTime()); |
122 | $this->assertEquals('1.1.1.1', $entry->getDomainName()); | |
558d9aab | 123 | } |
f530f7f5 KG |
124 | |
125 | private function getTaggerMock() | |
126 | { | |
127 | return $this->getMockBuilder('Wallabag\CoreBundle\Helper\RuleBasedTagger') | |
128 | ->setMethods(array('tag')) | |
129 | ->disableOriginalConstructor() | |
130 | ->getMock(); | |
131 | } | |
1c9cd2a7 | 132 | |
0c5bcd82 | 133 | private function getLogger() |
1c9cd2a7 | 134 | { |
0c5bcd82 | 135 | return new NullLogger(); |
1c9cd2a7 | 136 | } |
558d9aab | 137 | } |