mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-17 02:39:24 +01:00
Merge pull request #2331 from wallabag/api-links
Fix parameters in API _links
This commit is contained in:
commit
dfbbf0e18a
@ -82,8 +82,8 @@ class WallabagRestController extends FOSRestController
|
|||||||
$order = $request->query->get('order', 'desc');
|
$order = $request->query->get('order', 'desc');
|
||||||
$page = (int) $request->query->get('page', 1);
|
$page = (int) $request->query->get('page', 1);
|
||||||
$perPage = (int) $request->query->get('perPage', 30);
|
$perPage = (int) $request->query->get('perPage', 30);
|
||||||
$since = $request->query->get('since', 0);
|
|
||||||
$tags = $request->query->get('tags', '');
|
$tags = $request->query->get('tags', '');
|
||||||
|
$since = $request->query->get('since', 0);
|
||||||
|
|
||||||
$pager = $this->getDoctrine()
|
$pager = $this->getDoctrine()
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
@ -95,7 +95,20 @@ class WallabagRestController extends FOSRestController
|
|||||||
$pagerfantaFactory = new PagerfantaFactory('page', 'perPage');
|
$pagerfantaFactory = new PagerfantaFactory('page', 'perPage');
|
||||||
$paginatedCollection = $pagerfantaFactory->createRepresentation(
|
$paginatedCollection = $pagerfantaFactory->createRepresentation(
|
||||||
$pager,
|
$pager,
|
||||||
new Route('api_get_entries', [], UrlGeneratorInterface::ABSOLUTE_URL)
|
new Route(
|
||||||
|
'api_get_entries',
|
||||||
|
[
|
||||||
|
'archive' => $isArchived,
|
||||||
|
'starred' => $isStarred,
|
||||||
|
'sort' => $sort,
|
||||||
|
'order' => $order,
|
||||||
|
'page' => $page,
|
||||||
|
'perPage' => $perPage,
|
||||||
|
'tags' => $tags,
|
||||||
|
'since' => $since,
|
||||||
|
],
|
||||||
|
UrlGeneratorInterface::ABSOLUTE_URL
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($paginatedCollection, 'json');
|
$json = $this->get('serializer')->serialize($paginatedCollection, 'json');
|
||||||
|
@ -128,7 +128,7 @@ class EntryRepository extends EntityRepository
|
|||||||
$qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred);
|
$qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($since >= 0) {
|
if ($since > 0) {
|
||||||
$qb->andWhere('e.updatedAt > :since')->setParameter('since', new \DateTime(date('Y-m-d H:i:s', $since)));
|
$qb->andWhere('e.updatedAt > :since')->setParameter('since', new \DateTime(date('Y-m-d H:i:s', $since)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +78,53 @@ class WallabagRestControllerTest extends WallabagApiTestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetEntriesWithFullOptions()
|
||||||
|
{
|
||||||
|
$this->client->request('GET', '/api/entries', [
|
||||||
|
'archive' => 1,
|
||||||
|
'starred' => 1,
|
||||||
|
'sort' => 'updated',
|
||||||
|
'order' => 'asc',
|
||||||
|
'page' => 1,
|
||||||
|
'perPage' => 2,
|
||||||
|
'tags' => 'foo',
|
||||||
|
'since' => 1443274283,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
$this->assertGreaterThanOrEqual(1, count($content));
|
||||||
|
$this->assertArrayHasKey('items', $content['_embedded']);
|
||||||
|
$this->assertGreaterThanOrEqual(0, $content['total']);
|
||||||
|
$this->assertEquals(1, $content['page']);
|
||||||
|
$this->assertEquals(2, $content['limit']);
|
||||||
|
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('_links', $content);
|
||||||
|
$this->assertArrayHasKey('self', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('first', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('last', $content['_links']);
|
||||||
|
|
||||||
|
foreach (['self', 'first', 'last'] as $link) {
|
||||||
|
$this->assertArrayHasKey('href', $content['_links'][$link]);
|
||||||
|
$this->assertContains('archive=1', $content['_links'][$link]['href']);
|
||||||
|
$this->assertContains('starred=1', $content['_links'][$link]['href']);
|
||||||
|
$this->assertContains('sort=updated', $content['_links'][$link]['href']);
|
||||||
|
$this->assertContains('order=asc', $content['_links'][$link]['href']);
|
||||||
|
$this->assertContains('tags=foo', $content['_links'][$link]['href']);
|
||||||
|
$this->assertContains('since=1443274283', $content['_links'][$link]['href']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->assertTrue(
|
||||||
|
$this->client->getResponse()->headers->contains(
|
||||||
|
'Content-Type',
|
||||||
|
'application/json'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetStarredEntries()
|
public function testGetStarredEntries()
|
||||||
{
|
{
|
||||||
$this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']);
|
$this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']);
|
||||||
@ -92,6 +139,17 @@ class WallabagRestControllerTest extends WallabagApiTestCase
|
|||||||
$this->assertEquals(1, $content['page']);
|
$this->assertEquals(1, $content['page']);
|
||||||
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('_links', $content);
|
||||||
|
$this->assertArrayHasKey('self', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('first', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('last', $content['_links']);
|
||||||
|
|
||||||
|
foreach (['self', 'first', 'last'] as $link) {
|
||||||
|
$this->assertArrayHasKey('href', $content['_links'][$link]);
|
||||||
|
$this->assertContains('starred=1', $content['_links'][$link]['href']);
|
||||||
|
$this->assertContains('sort=updated', $content['_links'][$link]['href']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
$this->client->getResponse()->headers->contains(
|
$this->client->getResponse()->headers->contains(
|
||||||
'Content-Type',
|
'Content-Type',
|
||||||
@ -114,6 +172,16 @@ class WallabagRestControllerTest extends WallabagApiTestCase
|
|||||||
$this->assertEquals(1, $content['page']);
|
$this->assertEquals(1, $content['page']);
|
||||||
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('_links', $content);
|
||||||
|
$this->assertArrayHasKey('self', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('first', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('last', $content['_links']);
|
||||||
|
|
||||||
|
foreach (['self', 'first', 'last'] as $link) {
|
||||||
|
$this->assertArrayHasKey('href', $content['_links'][$link]);
|
||||||
|
$this->assertContains('archive=1', $content['_links'][$link]['href']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
$this->client->getResponse()->headers->contains(
|
$this->client->getResponse()->headers->contains(
|
||||||
'Content-Type',
|
'Content-Type',
|
||||||
@ -136,6 +204,16 @@ class WallabagRestControllerTest extends WallabagApiTestCase
|
|||||||
$this->assertEquals(1, $content['page']);
|
$this->assertEquals(1, $content['page']);
|
||||||
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('_links', $content);
|
||||||
|
$this->assertArrayHasKey('self', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('first', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('last', $content['_links']);
|
||||||
|
|
||||||
|
foreach (['self', 'first', 'last'] as $link) {
|
||||||
|
$this->assertArrayHasKey('href', $content['_links'][$link]);
|
||||||
|
$this->assertContains('tags='.urlencode('foo,bar'), $content['_links'][$link]['href']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
$this->client->getResponse()->headers->contains(
|
$this->client->getResponse()->headers->contains(
|
||||||
'Content-Type',
|
'Content-Type',
|
||||||
@ -146,7 +224,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase
|
|||||||
|
|
||||||
public function testGetDatedEntries()
|
public function testGetDatedEntries()
|
||||||
{
|
{
|
||||||
$this->client->request('GET', '/api/entries', ['since' => 1]);
|
$this->client->request('GET', '/api/entries', ['since' => 1443274283]);
|
||||||
|
|
||||||
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
@ -158,6 +236,16 @@ class WallabagRestControllerTest extends WallabagApiTestCase
|
|||||||
$this->assertEquals(1, $content['page']);
|
$this->assertEquals(1, $content['page']);
|
||||||
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
$this->assertGreaterThanOrEqual(1, $content['pages']);
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('_links', $content);
|
||||||
|
$this->assertArrayHasKey('self', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('first', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('last', $content['_links']);
|
||||||
|
|
||||||
|
foreach (['self', 'first', 'last'] as $link) {
|
||||||
|
$this->assertArrayHasKey('href', $content['_links'][$link]);
|
||||||
|
$this->assertContains('since=1443274283', $content['_links'][$link]['href']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
$this->client->getResponse()->headers->contains(
|
$this->client->getResponse()->headers->contains(
|
||||||
'Content-Type',
|
'Content-Type',
|
||||||
@ -181,6 +269,16 @@ class WallabagRestControllerTest extends WallabagApiTestCase
|
|||||||
$this->assertEquals(1, $content['page']);
|
$this->assertEquals(1, $content['page']);
|
||||||
$this->assertEquals(1, $content['pages']);
|
$this->assertEquals(1, $content['pages']);
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('_links', $content);
|
||||||
|
$this->assertArrayHasKey('self', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('first', $content['_links']);
|
||||||
|
$this->assertArrayHasKey('last', $content['_links']);
|
||||||
|
|
||||||
|
foreach (['self', 'first', 'last'] as $link) {
|
||||||
|
$this->assertArrayHasKey('href', $content['_links'][$link]);
|
||||||
|
$this->assertContains('since='.($future->getTimestamp() + 1000), $content['_links'][$link]['href']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
$this->client->getResponse()->headers->contains(
|
$this->client->getResponse()->headers->contains(
|
||||||
'Content-Type',
|
'Content-Type',
|
||||||
|
Loading…
Reference in New Issue
Block a user