aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJeremy Benoist <jeremy.benoist@gmail.com>2017-07-24 16:39:29 +0200
committerJeremy Benoist <jeremy.benoist@gmail.com>2017-07-24 17:07:47 +0200
commitff9f89fd2318cfb29a18d941077b5afc859bf0fe (patch)
tree14c18ed4b13ee27bdd849a1c4d6ddba31fc06b82
parentb236d3f627a21bc9b02e7726bbb72d632937a45e (diff)
downloadwallabag-ff9f89fd2318cfb29a18d941077b5afc859bf0fe.tar.gz
wallabag-ff9f89fd2318cfb29a18d941077b5afc859bf0fe.tar.zst
wallabag-ff9f89fd2318cfb29a18d941077b5afc859bf0fe.zip
Add a test for updatePublishedAt
To avoid error when a content is re-submitted and it previously add a published date. Also, fix the `testPostSameEntry`
-rw-r--r--src/Wallabag/CoreBundle/Helper/ContentProxy.php12
-rw-r--r--tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php34
2 files changed, 43 insertions, 3 deletions
diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php
index fd97e0ff..1ac7ad83 100644
--- a/src/Wallabag/CoreBundle/Helper/ContentProxy.php
+++ b/src/Wallabag/CoreBundle/Helper/ContentProxy.php
@@ -122,15 +122,21 @@ class ContentProxy
122 */ 122 */
123 public function updatePublishedAt(Entry $entry, $value) 123 public function updatePublishedAt(Entry $entry, $value)
124 { 124 {
125 $date = $value instanceof \DateTime ? $value->date : $value; 125 $date = $value;
126 126
127 // is it a timestamp? 127 // is it a timestamp?
128 if (filter_var($date, FILTER_VALIDATE_INT) !== false) { 128 if (filter_var($date, FILTER_VALIDATE_INT) !== false) {
129 $date = '@' . $value; 129 $date = '@' . $date;
130 } 130 }
131 131
132 try { 132 try {
133 $entry->setPublishedAt(new \DateTime($date)); 133 // is it already a DateTime?
134 // (it's inside the try/catch in case of fail to be parse time string)
135 if (!$date instanceof \DateTime) {
136 $date = new \DateTime($date);
137 }
138
139 $entry->setPublishedAt($date);
134 } catch (\Exception $e) { 140 } catch (\Exception $e) {
135 $this->logger->warning('Error while defining date', ['e' => $e, 'url' => $entry->getUrl(), 'date' => $value]); 141 $this->logger->warning('Error while defining date', ['e' => $e, 'url' => $entry->getUrl(), 'date' => $value]);
136 } 142 }
diff --git a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php
index c76be13d..2dc08be2 100644
--- a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php
+++ b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php
@@ -421,6 +421,16 @@ class EntryRestControllerTest extends WallabagApiTestCase
421 421
422 public function testPostSameEntry() 422 public function testPostSameEntry()
423 { 423 {
424 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
425 $entry = new Entry($em->getReference(User::class, 1));
426 $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');
427 $entry->setArchived(true);
428 $entry->addTag((new Tag())->setLabel('google'));
429 $entry->addTag((new Tag())->setLabel('apple'));
430 $em->persist($entry);
431 $em->flush();
432 $em->clear();
433
424 $this->client->request('POST', '/api/entries.json', [ 434 $this->client->request('POST', '/api/entries.json', [
425 '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', 435 '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',
426 'archive' => '1', 436 'archive' => '1',
@@ -1046,4 +1056,28 @@ class EntryRestControllerTest extends WallabagApiTestCase
1046 $this->assertSame(400, $this->client->getResponse()->getStatusCode()); 1056 $this->assertSame(400, $this->client->getResponse()->getStatusCode());
1047 $this->assertContains('API limit reached', $this->client->getResponse()->getContent()); 1057 $this->assertContains('API limit reached', $this->client->getResponse()->getContent());
1048 } 1058 }
1059
1060 public function testRePostEntryAndReUsePublishedAt()
1061 {
1062 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
1063 $entry = new Entry($em->getReference(User::class, 1));
1064 $entry->setTitle('Antoine de Caunes : « Je veux avoir le droit de tâtonner »');
1065 $entry->setContent('hihi');
1066 $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');
1067 $entry->setPublishedAt(new \DateTime('2017-06-26T07:46:02+0200'));
1068 $em->persist($entry);
1069 $em->flush();
1070 $em->clear();
1071
1072 $this->client->request('POST', '/api/entries.json', [
1073 'url' => 'http://www.lemonde.fr/m-perso/article/2017/06/25/antoine-de-caunes-je-veux-avoir-le-droit-de-tatonner_5150728_4497916.html',
1074 ]);
1075
1076 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
1077
1078 $content = json_decode($this->client->getResponse()->getContent(), true);
1079
1080 $this->assertGreaterThan(0, $content['id']);
1081 $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']);
1082 }
1049} 1083}