Skip to content

Commit 5ee09d4

Browse files
author
Paweł Mikołajczuk
authored
Merge pull request #281 from takeit/swp-678
Filter articles by route id
2 parents 7855715 + d8b2648 commit 5ee09d4

File tree

4 files changed

+57
-2
lines changed

4 files changed

+57
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ in 0.1 minor versions.
88
To get the diff for a specific change, go to https://github.com/superdesk/web-publisher/commit/XXX where XXX is the change hash
99

1010
* 0.5.0
11+
* feature [#281] Allow to filter articles by route id in API
1112
* feature [#280] Add correct Content-Type header to routes with extensions
1213
* feature [#279] Allow to filter articles by status in API
1314
* bug [#270] Rely on "evelovedfrom" property instead of a slug

src/SWP/Bundle/ContentBundle/Controller/ArticleController.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ class ArticleController extends Controller
4141
* 200="Returned on success.",
4242
* },
4343
* filters={
44-
* {"name"="status", "dataType"="string", "pattern"="new|published|unpublished|canceled"}
44+
* {"name"="status", "dataType"="string", "pattern"="new|published|unpublished|canceled"},
45+
* {"name"="route", "dataType"="integer"}
4546
* }
4647
* )
4748
* @Route("/api/{version}/content/articles/", options={"expose"=true}, defaults={"version"="v1"}, name="swp_api_content_list_articles")
@@ -58,6 +59,7 @@ public function listAction(Request $request)
5859
$articles = $this->get('swp.repository.article')
5960
->getPaginatedByCriteria(new Criteria([
6061
'status' => $request->query->get('status', ''),
62+
'route' => $request->query->get('route', ''),
6163
]), [], new PaginationData($request));
6264

6365
return new ResourcesListResponse($articles);

src/SWP/Bundle/ContentBundle/Tests/Functional/Controller/ArticleControllerTest.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,4 +232,56 @@ private function getArticlesByStatus($status)
232232

233233
return json_decode($client->getResponse()->getContent(), true);
234234
}
235+
236+
public function testFilterArticlesByRoute()
237+
{
238+
$content = $this->getArticlesByRouteId(1);
239+
self::assertEquals(5, $content['total']);
240+
241+
$content = $this->getArticlesByRouteId(2);
242+
self::assertEquals(1, $content['total']);
243+
self::assertEquals(2, $content['_embedded']['_items'][0]['route']['id']);
244+
self::assertEquals('Article 3', $content['_embedded']['_items'][0]['title']);
245+
246+
$content = $this->getArticlesByRouteId(3);
247+
self::assertEquals(1, $content['total']);
248+
self::assertEquals(3, $content['_embedded']['_items'][0]['route']['id']);
249+
self::assertEquals('Features client1', $content['_embedded']['_items'][0]['title']);
250+
}
251+
252+
public function testFilterArticlesByRouteAndStatus()
253+
{
254+
$client = static::createClient();
255+
$client->request('GET', $this->router->generate('swp_api_content_list_articles', [
256+
'route' => 2,
257+
'status' => 'canceled',
258+
]));
259+
self::assertEquals(200, $client->getResponse()->getStatusCode());
260+
261+
$content = json_decode($client->getResponse()->getContent(), true);
262+
263+
self::assertEquals(1, $content['total']);
264+
self::assertEquals(2, $content['_embedded']['_items'][0]['route']['id']);
265+
self::assertEquals('Article 3', $content['_embedded']['_items'][0]['title']);
266+
self::assertEquals('canceled', $content['_embedded']['_items'][0]['status']);
267+
268+
$client->request('GET', $this->router->generate('swp_api_content_list_articles', [
269+
'route' => 2,
270+
'status' => 'fake',
271+
]));
272+
self::assertEquals(200, $client->getResponse()->getStatusCode());
273+
274+
$content = json_decode($client->getResponse()->getContent(), true);
275+
276+
self::assertEquals(0, $content['total']);
277+
}
278+
279+
private function getArticlesByRouteId($routeId)
280+
{
281+
$client = static::createClient();
282+
$client->request('GET', $this->router->generate('swp_api_content_list_articles', ['route' => $routeId]));
283+
self::assertEquals(200, $client->getResponse()->getStatusCode());
284+
285+
return json_decode($client->getResponse()->getContent(), true);
286+
}
235287
}

src/SWP/Bundle/ContentBundle/Tests/Functional/app/Resources/fixtures/LoadArticlesData.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public function loadArticles(ObjectManager $manager)
139139
[
140140
'title' => 'Article 3',
141141
'content' => 'article 3 content',
142-
'route' => 'news',
142+
'route' => 'articles',
143143
'locale' => 'en',
144144
'status' => ArticleInterface::STATUS_CANCELED,
145145
],

0 commit comments

Comments
 (0)