]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Avoid false preview image
authorJeremy Benoist <jeremy.benoist@gmail.com>
Tue, 10 Jan 2017 16:42:34 +0000 (17:42 +0100)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Tue, 10 Jan 2017 16:42:36 +0000 (17:42 +0100)
If the website doesn't provide an og_image, the value will be false and so it'll be saved like that in the database.
We prefer to leave it as null instead of false.

src/Wallabag/CoreBundle/Helper/ContentProxy.php
tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php

index 0130bd2b21ccc7474db07994f26d7dbd14fafa34..f222dd88c26fced386f0328d03105e9194e9812d 100644 (file)
@@ -88,7 +88,7 @@ class ContentProxy
             $entry->setDomainName($domainName);
         }
 
-        if (isset($content['open_graph']['og_image'])) {
+        if (isset($content['open_graph']['og_image']) && $content['open_graph']['og_image']) {
             $entry->setPreviewPicture($content['open_graph']['og_image']);
         }
 
index 2ca13b9149f7b4c589af233cf8d7cfc3e225dc5f..5956b502fb68cf4fa6372e3382cb7808cd2f86ef 100644 (file)
@@ -161,6 +161,47 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('1.1.1.1', $entry->getDomainName());
     }
 
+    public function testWithContentAndNoOgImage()
+    {
+        $tagger = $this->getTaggerMock();
+        $tagger->expects($this->once())
+            ->method('tag');
+
+        $graby = $this->getMockBuilder('Graby\Graby')
+            ->setMethods(['fetchContent'])
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $graby->expects($this->any())
+            ->method('fetchContent')
+            ->willReturn([
+                'html' => str_repeat('this is my content', 325),
+                'title' => 'this is my title',
+                'url' => 'http://1.1.1.1',
+                'content_type' => 'text/html',
+                'language' => 'fr',
+                'status' => '200',
+                'open_graph' => [
+                    'og_title' => 'my OG title',
+                    'og_description' => 'OG desc',
+                    'og_image' => false,
+                ],
+            ]);
+
+        $proxy = new ContentProxy($graby, $tagger, $this->getTagRepositoryMock(), $this->getLogger(), $this->fetchingErrorMessage);
+        $entry = $proxy->updateEntry(new Entry(new User()), 'http://0.0.0.0');
+
+        $this->assertEquals('http://1.1.1.1', $entry->getUrl());
+        $this->assertEquals('this is my title', $entry->getTitle());
+        $this->assertContains('this is my content', $entry->getContent());
+        $this->assertNull($entry->getPreviewPicture());
+        $this->assertEquals('text/html', $entry->getMimetype());
+        $this->assertEquals('fr', $entry->getLanguage());
+        $this->assertEquals('200', $entry->getHttpStatus());
+        $this->assertEquals(4.0, $entry->getReadingTime());
+        $this->assertEquals('1.1.1.1', $entry->getDomainName());
+    }
+
     public function testWithForcedContent()
     {
         $tagger = $this->getTaggerMock();