Don't add entry through API if it already exists

This commit is contained in:
Thomas Citharel 2016-03-16 21:07:01 +01:00
parent 17051137ec
commit 3107f92acb
2 changed files with 26 additions and 4 deletions

View file

@ -112,10 +112,14 @@ class WallabagRestController extends FOSRestController
$isArchived = $request->request->get('archive');
$isStarred = $request->request->get('starred');
$entry = $this->get('wallabag_core.content_proxy')->updateEntry(
new Entry($this->getUser()),
$url
);
$entry = $this->get('wallabag_core.entry_repository')->findByUrlAndUserId($url, $this->getUser()->getId());
if (false === $entry) {
$entry = $this->get('wallabag_core.content_proxy')->updateEntry(
new Entry($this->getUser()),
$url
);
}
$tags = $request->request->get('tags', '');
if (!empty($tags)) {

View file

@ -166,6 +166,24 @@ class WallabagRestControllerTest extends WallabagApiTestCase
$this->assertCount(1, $content['tags']);
}
public function testPostSameEntry()
{
$this->client->request('POST', '/api/entries.json', array(
'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',
));
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertGreaterThan(0, $content['id']);
$this->assertEquals('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', $content['url']);
$this->assertEquals(true, $content['is_archived']);
$this->assertEquals(false, $content['is_starred']);
$this->assertCount(1, $content['tags']);
}
public function testPostArchivedAndStarredEntry()
{
$this->client->request('POST', '/api/entries.json', array(