diff options
author | adev <adev2000@gmail.com> | 2017-05-08 16:27:16 +0200 |
---|---|---|
committer | adev <adev2000@gmail.com> | 2017-05-08 16:27:16 +0200 |
commit | b60a666df22cb9174bdc4506d71cbc9e8ba6b1c9 (patch) | |
tree | b0a743684f44281e1e702b56674dd16ad2424d59 | |
parent | f2beee5185e0bf7f983fb97a34480b4c74d7eb8c (diff) | |
download | wallabag-b60a666df22cb9174bdc4506d71cbc9e8ba6b1c9.tar.gz wallabag-b60a666df22cb9174bdc4506d71cbc9e8ba6b1c9.tar.zst wallabag-b60a666df22cb9174bdc4506d71cbc9e8ba6b1c9.zip |
Fix API pagination is broken if perPage is custom value
Fix #2720
-rw-r--r-- | src/Wallabag/ApiBundle/Controller/EntryRestController.php | 3 | ||||
-rw-r--r-- | tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/Wallabag/ApiBundle/Controller/EntryRestController.php b/src/Wallabag/ApiBundle/Controller/EntryRestController.php index 2c2ec0c1..c544815e 100644 --- a/src/Wallabag/ApiBundle/Controller/EntryRestController.php +++ b/src/Wallabag/ApiBundle/Controller/EntryRestController.php | |||
@@ -98,12 +98,13 @@ class EntryRestController extends WallabagRestController | |||
98 | $tags = $request->query->get('tags', ''); | 98 | $tags = $request->query->get('tags', ''); |
99 | $since = $request->query->get('since', 0); | 99 | $since = $request->query->get('since', 0); |
100 | 100 | ||
101 | /** @var \Pagerfanta\Pagerfanta $pager */ | ||
101 | $pager = $this->getDoctrine() | 102 | $pager = $this->getDoctrine() |
102 | ->getRepository('WallabagCoreBundle:Entry') | 103 | ->getRepository('WallabagCoreBundle:Entry') |
103 | ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order, $since, $tags); | 104 | ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order, $since, $tags); |
104 | 105 | ||
105 | $pager->setCurrentPage($page); | ||
106 | $pager->setMaxPerPage($perPage); | 106 | $pager->setMaxPerPage($perPage); |
107 | $pager->setCurrentPage($page); | ||
107 | 108 | ||
108 | $pagerfantaFactory = new PagerfantaFactory('page', 'perPage'); | 109 | $pagerfantaFactory = new PagerfantaFactory('page', 'perPage'); |
109 | $paginatedCollection = $pagerfantaFactory->createRepresentation( | 110 | $paginatedCollection = $pagerfantaFactory->createRepresentation( |
diff --git a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php index 409a8291..63d70bd9 100644 --- a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php +++ b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php | |||
@@ -156,6 +156,22 @@ class EntryRestControllerTest extends WallabagApiTestCase | |||
156 | $this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type')); | 156 | $this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type')); |
157 | } | 157 | } |
158 | 158 | ||
159 | public function testGetEntriesOnPageTwo() | ||
160 | { | ||
161 | $this->client->request('GET', '/api/entries', [ | ||
162 | 'page' => 2, | ||
163 | 'perPage' => 2, | ||
164 | ]); | ||
165 | |||
166 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
167 | |||
168 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
169 | |||
170 | $this->assertGreaterThanOrEqual(0, $content['total']); | ||
171 | $this->assertEquals(2, $content['page']); | ||
172 | $this->assertEquals(2, $content['limit']); | ||
173 | } | ||
174 | |||
159 | public function testGetStarredEntries() | 175 | public function testGetStarredEntries() |
160 | { | 176 | { |
161 | $this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']); | 177 | $this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']); |