So, everything is centralized in one place when we save a new entry.
{
$entry1 = new Entry($this->getReference('admin-user'));
$entry1->setUrl('http://0.0.0.0');
+ $entry1->setReadingTime(11);
+ $entry1->setDomainName('domain.io');
$entry1->setTitle('test title entry1');
$entry1->setContent('This is my content /o/');
$entry1->setLanguage('en');
$entry2 = new Entry($this->getReference('admin-user'));
$entry2->setUrl('http://0.0.0.0');
+ $entry2->setReadingTime(1);
+ $entry2->setDomainName('domain.io');
$entry2->setTitle('test title entry2');
$entry2->setContent('This is my content /o/');
$entry2->setLanguage('fr');
$entry3 = new Entry($this->getReference('bob-user'));
$entry3->setUrl('http://0.0.0.0');
+ $entry3->setReadingTime(1);
+ $entry3->setDomainName('domain.io');
$entry3->setTitle('test title entry3');
$entry3->setContent('This is my content /o/');
$entry3->setLanguage('en');
$entry4 = new Entry($this->getReference('admin-user'));
$entry4->setUrl('http://0.0.0.0');
+ $entry4->setReadingTime(12);
+ $entry4->setDomainName('domain.io');
$entry4->setTitle('test title entry4');
$entry4->setContent('This is my content /o/');
$entry4->setLanguage('en');
$entry5 = new Entry($this->getReference('admin-user'));
$entry5->setUrl('http://0.0.0.0');
+ $entry5->setReadingTime(12);
+ $entry5->setDomainName('domain.io');
$entry5->setTitle('test title entry5');
$entry5->setContent('This is my content /o/');
$entry5->setStarred(true);
$entry6 = new Entry($this->getReference('admin-user'));
$entry6->setUrl('http://0.0.0.0');
+ $entry6->setReadingTime(12);
+ $entry6->setDomainName('domain.io');
$entry6->setTitle('test title entry6');
$entry6->setContent('This is my content /o/');
$entry6->setArchived(true);
use Symfony\Component\Validator\Constraints as Assert;
use Hateoas\Configuration\Annotation as Hateoas;
use JMS\Serializer\Annotation\XmlRoot;
-use Wallabag\CoreBundle\Tools\Utils;
/**
* Entry.
public function setContent($content)
{
$this->content = $content;
- $this->readingTime = Utils::getReadingTime($content);
- $this->domainName = parse_url($this->url, PHP_URL_HOST);
return $this;
}
use Graby\Graby;
use Wallabag\CoreBundle\Entity\Entry;
+use Wallabag\CoreBundle\Tools\Utils;
/**
* This kind of proxy class take care of getting the content from an url
$entry->setContent($html);
$entry->setLanguage($content['language']);
$entry->setMimetype($content['content_type']);
+ $entry->setReadingTime(Utils::getReadingTime($html));
+ $entry->setDomainName(parse_url($entry->getUrl(), PHP_URL_HOST));
if (isset($content['open_graph']['og_image'])) {
$entry->setPreviewPicture($content['open_graph']['og_image']);
$this->assertEmpty($entry->getPreviewPicture());
$this->assertEmpty($entry->getMimetype());
$this->assertEmpty($entry->getLanguage());
+ $this->assertEquals(0.0, $entry->getReadingTime());
+ $this->assertEquals('0.0.0.0', $entry->getDomainName());
}
public function testWithEmptyContentButOG()
));
$proxy = new ContentProxy($graby);
- $entry = $proxy->updateEntry(new Entry(new User()), 'http://0.0.0.0');
+ $entry = $proxy->updateEntry(new Entry(new User()), 'http://domain.io');
- $this->assertEquals('http://0.0.0.0', $entry->getUrl());
+ $this->assertEquals('http://domain.io', $entry->getUrl());
$this->assertEquals('my title', $entry->getTitle());
$this->assertEquals('<p>Unable to retrieve readable content.</p><p><i>But we found a short description: </i></p>desc', $entry->getContent());
$this->assertEmpty($entry->getPreviewPicture());
$this->assertEmpty($entry->getLanguage());
$this->assertEmpty($entry->getMimetype());
+ $this->assertEquals(0.0, $entry->getReadingTime());
+ $this->assertEquals('domain.io', $entry->getDomainName());
}
public function testWithContent()
$graby->expects($this->any())
->method('fetchContent')
->willReturn(array(
- 'html' => 'this is my content',
+ 'html' => str_repeat('this is my content', 325),
'title' => 'this is my title',
'url' => 'http://1.1.1.1',
'content_type' => 'text/html',
$this->assertEquals('http://1.1.1.1', $entry->getUrl());
$this->assertEquals('this is my title', $entry->getTitle());
- $this->assertEquals('this is my content', $entry->getContent());
+ $this->assertContains('this is my content', $entry->getContent());
$this->assertEquals('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture());
$this->assertEquals('text/html', $entry->getMimetype());
$this->assertEquals('fr', $entry->getLanguage());
+ $this->assertEquals(4.0, $entry->getReadingTime());
+ $this->assertEquals('1.1.1.1', $entry->getDomainName());
}
}