X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2FWallabag%2FApiBundle%2FTests%2FController%2FWallabagRestControllerTest.php;h=c50e4d027c0b386d49ea9a8e9ac841e0d80a3416;hb=891a026e31ad54ca90b70f6026f23260cfadb7fd;hp=630b75bfe62adb2bbd21d387635e8613a027a587;hpb=807037884f0085cd39fe4b41cacd82be14e309d9;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php index 630b75bf..c50e4d02 100644 --- a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php +++ b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php @@ -13,7 +13,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase $entry = $this->client->getContainer() ->get('doctrine.orm.entity_manager') ->getRepository('WallabagCoreBundle:Entry') - ->findOneBy(array('user' => 1, 'isArchived' => false)); + ->findOneBy(['user' => 1, 'isArchived' => false]); if (!$entry) { $this->markTestSkipped('No content found in db.'); @@ -27,6 +27,9 @@ class WallabagRestControllerTest extends WallabagApiTestCase $this->assertEquals($entry->getTitle(), $content['title']); $this->assertEquals($entry->getUrl(), $content['url']); $this->assertCount(count($entry->getTags()), $content['tags']); + $this->assertEquals($entry->getUserName(), $content['user_name']); + $this->assertEquals($entry->getUserEmail(), $content['user_email']); + $this->assertEquals($entry->getUserId(), $content['user_id']); $this->assertTrue( $this->client->getResponse()->headers->contains( @@ -41,7 +44,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase $entry = $this->client->getContainer() ->get('doctrine.orm.entity_manager') ->getRepository('WallabagCoreBundle:Entry') - ->findOneBy(array('user' => 2, 'isArchived' => false)); + ->findOneBy(['user' => 2, 'isArchived' => false]); if (!$entry) { $this->markTestSkipped('No content found in db.'); @@ -76,7 +79,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase public function testGetStarredEntries() { - $this->client->request('GET', '/api/entries', array('star' => 1, 'sort' => 'updated')); + $this->client->request('GET', '/api/entries', ['star' => 1, 'sort' => 'updated']); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -98,7 +101,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase public function testGetArchiveEntries() { - $this->client->request('GET', '/api/entries', array('archive' => 1)); + $this->client->request('GET', '/api/entries', ['archive' => 1]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -146,10 +149,11 @@ class WallabagRestControllerTest extends WallabagApiTestCase public function testPostEntry() { - $this->client->request('POST', '/api/entries.json', array( + $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', 'tags' => 'google', - )); + 'title' => 'New title for my article', + ]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -159,16 +163,37 @@ class WallabagRestControllerTest extends WallabagApiTestCase $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(false, $content['is_archived']); $this->assertEquals(false, $content['is_starred']); + $this->assertEquals('New title for my article', $content['title']); + $this->assertEquals(1, $content['user_id']); $this->assertCount(1, $content['tags']); } - public function testPostArchivedEntry() + public function testPostSameEntry() { - $this->client->request('POST', '/api/entries.json', array( + $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', + 'tags' => 'google, apple', + ]); + + $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(2, $content['tags']); + } + + public function testPostArchivedAndStarredEntry() + { + $this->client->request('POST', '/api/entries.json', [ 'url' => 'http://www.lemonde.fr/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html', - 'archive' => true, - 'starred' => false, - )); + 'archive' => '1', + 'starred' => '1', + ]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -177,7 +202,26 @@ class WallabagRestControllerTest extends WallabagApiTestCase $this->assertGreaterThan(0, $content['id']); $this->assertEquals('http://www.lemonde.fr/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html', $content['url']); $this->assertEquals(true, $content['is_archived']); - $this->assertEquals(false, $content['is_starred']); + $this->assertEquals(true, $content['is_starred']); + $this->assertEquals(1, $content['user_id']); + } + + public function testPostArchivedAndStarredEntryWithoutQuotes() + { + $this->client->request('POST', '/api/entries.json', [ + 'url' => 'http://www.lemonde.fr/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html', + 'archive' => 0, + 'starred' => 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/idees/article/2016/02/08/preserver-la-liberte-d-expression-sur-les-reseaux-sociaux_4861503_3232.html', $content['url']); + $this->assertEquals(false, $content['is_archived']); + $this->assertEquals(true, $content['is_starred']); } public function testPatchEntry() @@ -194,12 +238,44 @@ class WallabagRestControllerTest extends WallabagApiTestCase // hydrate the tags relations $nbTags = count($entry->getTags()); - $this->client->request('PATCH', '/api/entries/'.$entry->getId().'.json', array( + $this->client->request('PATCH', '/api/entries/'.$entry->getId().'.json', [ 'title' => 'New awesome title', 'tags' => 'new tag '.uniqid(), - 'star' => true, - 'archive' => false, - )); + 'starred' => '1', + 'archive' => '0', + ]); + + $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); + + $content = json_decode($this->client->getResponse()->getContent(), true); + + $this->assertEquals($entry->getId(), $content['id']); + $this->assertEquals($entry->getUrl(), $content['url']); + $this->assertEquals('New awesome title', $content['title']); + $this->assertGreaterThan($nbTags, count($content['tags'])); + $this->assertEquals(1, $content['user_id']); + } + + public function testPatchEntryWithoutQuotes() + { + $entry = $this->client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneByUser(1); + + if (!$entry) { + $this->markTestSkipped('No content found in db.'); + } + + // hydrate the tags relations + $nbTags = count($entry->getTags()); + + $this->client->request('PATCH', '/api/entries/'.$entry->getId().'.json', [ + 'title' => 'New awesome title', + 'tags' => 'new tag '.uniqid(), + 'starred' => 1, + 'archive' => 0, + ]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -224,9 +300,9 @@ class WallabagRestControllerTest extends WallabagApiTestCase $this->markTestSkipped('No content found in db.'); } - $tags = array(); + $tags = []; foreach ($entry->getTags() as $tag) { - $tags[] = array('id' => $tag->getId(), 'label' => $tag->getLabel(), 'slug' => $tag->getSlug()); + $tags[] = ['id' => $tag->getId(), 'label' => $tag->getLabel(), 'slug' => $tag->getSlug()]; } $this->client->request('GET', '/api/entries/'.$entry->getId().'/tags'); @@ -249,7 +325,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase $newTags = 'tag1,tag2,tag3'; - $this->client->request('POST', '/api/entries/'.$entry->getId().'/tags', array('tags' => $newTags)); + $this->client->request('POST', '/api/entries/'.$entry->getId().'/tags', ['tags' => $newTags]); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); @@ -263,7 +339,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase ->getRepository('WallabagCoreBundle:Entry') ->find($entry->getId()); - $tagsInDB = array(); + $tagsInDB = []; foreach ($entryDB->getTags()->toArray() as $tag) { $tagsInDB[$tag->getId()] = $tag->getLabel(); } @@ -336,4 +412,102 @@ class WallabagRestControllerTest extends WallabagApiTestCase $this->assertCount(0, $entries); } + + public function testGetVersion() + { + $this->client->request('GET', '/api/version'); + + $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); + + $content = json_decode($this->client->getResponse()->getContent(), true); + + $this->assertEquals($this->client->getContainer()->getParameter('wallabag_core.version'), $content); + } + + public function testSaveIsArchivedAfterPost() + { + $entry = $this->client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneBy(['user' => 1, 'isArchived' => true]); + + if (!$entry) { + $this->markTestSkipped('No content found in db.'); + } + + $this->client->request('POST', '/api/entries.json', [ + 'url' => $entry->getUrl(), + ]); + + $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); + + $content = json_decode($this->client->getResponse()->getContent(), true); + + $this->assertEquals(true, $content['is_archived']); + } + + public function testSaveIsStarredAfterPost() + { + $entry = $this->client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneBy(['user' => 1, 'isStarred' => true]); + + if (!$entry) { + $this->markTestSkipped('No content found in db.'); + } + + $this->client->request('POST', '/api/entries.json', [ + 'url' => $entry->getUrl(), + ]); + + $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); + + $content = json_decode($this->client->getResponse()->getContent(), true); + + $this->assertEquals(true, $content['is_starred']); + } + + public function testSaveIsArchivedAfterPatch() + { + $entry = $this->client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneBy(['user' => 1, 'isArchived' => true]); + + if (!$entry) { + $this->markTestSkipped('No content found in db.'); + } + + $this->client->request('PATCH', '/api/entries/'.$entry->getId().'.json', [ + 'title' => $entry->getTitle().'++', + ]); + + $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); + + $content = json_decode($this->client->getResponse()->getContent(), true); + + $this->assertEquals(true, $content['is_archived']); + } + + public function testSaveIsStarredAfterPatch() + { + $entry = $this->client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findOneBy(['user' => 1, 'isStarred' => true]); + + if (!$entry) { + $this->markTestSkipped('No content found in db.'); + } + $this->client->request('PATCH', '/api/entries/'.$entry->getId().'.json', [ + 'title' => $entry->getTitle().'++', + ]); + + $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); + + $content = json_decode($this->client->getResponse()->getContent(), true); + + $this->assertEquals(true, $content['is_starred']); + } }