// In one case (at least in tests), url is empty here
// so we set it using $url provided in the updateEntry call.
- // Not sure what are the other possible cases where this property is empty
- if (empty($entry->getUrl()) && !empty($url))
- {
+ // Not sure what are the other possible cases where this property is empty
+ if (empty($entry->getUrl()) && !empty($url)) {
$entry->setUrl($url);
}
*/
private function stockEntry(Entry $entry, array $content)
{
- $entry->setUrl($content['url']);
+ // When a redirection occurs while fetching an entry
+ // we move the original url in origin_url property if empty
+ // and set the entry url with the final value
+ if (!empty($content['url']) && $entry->getUrl() !== $content['url']) {
+ if (empty($entry->getOriginUrl())) {
+ $entry->setOriginUrl($entry->getUrl());
+ }
+ $entry->setUrl($content['url']);
+ }
$this->setEntryDomainName($entry);
return $string;
}
+ public function testWithChangedUrl()
+ {
+ $tagger = $this->getTaggerMock();
+ $tagger->expects($this->once())
+ ->method('tag');
+
+ $proxy = new ContentProxy((new Graby()), $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage, true);
+ $entry = new Entry(new User());
+ $proxy->updateEntry(
+ $entry,
+ 'http://0.0.0.0',
+ [
+ 'html' => false,
+ 'title' => '',
+ 'url' => 'http://1.1.1.1',
+ 'content_type' => '',
+ 'language' => '',
+ ],
+ true
+ );
+
+ $this->assertSame('http://1.1.1.1', $entry->getUrl());
+ $this->assertSame('1.1.1.1', $entry->getDomainName());
+ $this->assertSame('http://0.0.0.0', $entry->getOriginUrl());
+ }
+
private function getTaggerMock()
{
return $this->getMockBuilder(RuleBasedTagger::class)