mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-23 09:31:04 +00:00
Merge pull request #3280 from Simounet/fix/2.3-date
Fix updatePublishedAt on already parsed article's date
This commit is contained in:
commit
839edf32cc
2 changed files with 42 additions and 2 deletions
|
@ -126,11 +126,17 @@ class ContentProxy
|
|||
|
||||
// is it a timestamp?
|
||||
if (filter_var($date, FILTER_VALIDATE_INT) !== false) {
|
||||
$date = '@' . $value;
|
||||
$date = '@' . $date;
|
||||
}
|
||||
|
||||
try {
|
||||
$entry->setPublishedAt(new \DateTime($date));
|
||||
// is it already a DateTime?
|
||||
// (it's inside the try/catch in case of fail to be parse time string)
|
||||
if (!$date instanceof \DateTime) {
|
||||
$date = new \DateTime($date);
|
||||
}
|
||||
|
||||
$entry->setPublishedAt($date);
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->warning('Error while defining date', ['e' => $e, 'url' => $entry->getUrl(), 'date' => $value]);
|
||||
}
|
||||
|
|
|
@ -421,6 +421,16 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
|||
|
||||
public function testPostSameEntry()
|
||||
{
|
||||
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$entry = new Entry($em->getReference(User::class, 1));
|
||||
$entry->setUrl('http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html');
|
||||
$entry->setArchived(true);
|
||||
$entry->addTag((new Tag())->setLabel('google'));
|
||||
$entry->addTag((new Tag())->setLabel('apple'));
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
$em->clear();
|
||||
|
||||
$this->client->request('POST', '/api/entries.json', [
|
||||
'url' => 'http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html',
|
||||
'archive' => '1',
|
||||
|
@ -1046,4 +1056,28 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
|||
$this->assertSame(400, $this->client->getResponse()->getStatusCode());
|
||||
$this->assertContains('API limit reached', $this->client->getResponse()->getContent());
|
||||
}
|
||||
|
||||
public function testRePostEntryAndReUsePublishedAt()
|
||||
{
|
||||
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$entry = new Entry($em->getReference(User::class, 1));
|
||||
$entry->setTitle('Antoine de Caunes : « Je veux avoir le droit de tâtonner »');
|
||||
$entry->setContent('hihi');
|
||||
$entry->setUrl('http://www.lemonde.fr/m-perso/article/2017/06/25/antoine-de-caunes-je-veux-avoir-le-droit-de-tatonner_5150728_4497916.html');
|
||||
$entry->setPublishedAt(new \DateTime('2017-06-26T07:46:02+0200'));
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
$em->clear();
|
||||
|
||||
$this->client->request('POST', '/api/entries.json', [
|
||||
'url' => 'http://www.lemonde.fr/m-perso/article/2017/06/25/antoine-de-caunes-je-veux-avoir-le-droit-de-tatonner_5150728_4497916.html',
|
||||
]);
|
||||
|
||||
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertGreaterThan(0, $content['id']);
|
||||
$this->assertSame('http://www.lemonde.fr/m-perso/article/2017/06/25/antoine-de-caunes-je-veux-avoir-le-droit-de-tatonner_5150728_4497916.html', $content['url']);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue