From 35fa496b164e5aadfbc6b0a5885e588db3c388fe Mon Sep 17 00:00:00 2001 From: florenttorregrosa Date: Thu, 13 Apr 2017 18:01:19 +0200 Subject: [PATCH] Issue #2841850 by Grimreaper: Internal Server Error with Grouped Filter Conditions --- tests/src/Functional/JsonApiFunctionalTest.php | 44 ++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/tests/src/Functional/JsonApiFunctionalTest.php b/tests/src/Functional/JsonApiFunctionalTest.php index 366ab7e..766b864 100644 --- a/tests/src/Functional/JsonApiFunctionalTest.php +++ b/tests/src/Functional/JsonApiFunctionalTest.php @@ -244,13 +244,53 @@ class JsonApiFunctionalTest extends JsonApiFunctionalTestBase { ])); $this->assertSession()->statusCodeEquals(200); $this->assertGreaterThanOrEqual(1, count($single_output['data'])); - // 19. Test non-existing route without 'Accept' header. + // 19. Test filtering with OR and AND group (Grouping grouped filters). + $filter = [ + 'and-group' => [ + 'group' => [ + 'conjunction' => 'AND', + ], + ], + 'or-group' => [ + 'group' => [ + 'conjunction' => 'OR', + 'memberOf' => 'and-group', + ], + ], + 'admin-filter' => [ + 'condition' => [ + 'path' => 'uid.name', + 'value' => $this->user->getAccountName(), + 'memberOf' => 'and-group', + ], + ], + 'sticky-filter' => [ + 'condition' => [ + 'path' => 'sticky', + 'value' => 1, + 'memberOf' => 'or-group', + ], + ], + 'promote-filter' => [ + 'condition' => [ + 'path' => 'promote', + 'value' => 1, + 'memberOf' => 'or-group', + ], + ], + ]; + $single_output = Json::decode($this->drupalGet('/jsonapi/node/article', [ + 'query' => ['filter' => $filter], + ])); + $this->assertSession()->statusCodeEquals(200); + $this->assertGreaterThanOrEqual(0, count($single_output['data'])); + // 20. Test non-existing route without 'Accept' header. $this->drupalGet('/jsonapi/node/article/broccoli'); $this->assertSession()->statusCodeEquals(404); // Without the 'Accept' header we cannot know we want the 404 error // formatted as JSON API. $this->assertSession()->responseHeaderContains('Content-Type', 'text/html'); - // 20. Test non-existing route with 'Accept' header. + // 21. Test non-existing route with 'Accept' header. $single_output = Json::decode($this->drupalGet('/jsonapi/node/article/broccoli', [], [ 'Accept' => 'application/vnd.api+json', ])); -- 1.9.1