From 74e33dd194339d1afcd05e43d4f0fb8940361452 Mon Sep 17 00:00:00 2001 From: Steve Mareigner Date: Mon, 4 Dec 2017 10:06:37 +0100 Subject: [PATCH 1/2] fix(api): Easy sorter Error when modifier is already an array --- src/Service/Request/QueryModifier/Modifier/SortModifier.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Service/Request/QueryModifier/Modifier/SortModifier.php b/src/Service/Request/QueryModifier/Modifier/SortModifier.php index c9dea1b..e94ae84 100644 --- a/src/Service/Request/QueryModifier/Modifier/SortModifier.php +++ b/src/Service/Request/QueryModifier/Modifier/SortModifier.php @@ -40,7 +40,7 @@ public function setModifierFromRequest(ServerRequestInterface $request) } # Handle non JSON string, this is what we need ! - if (null === json_decode($modifiers)) { + if (!is_string($modifiers) || null === json_decode($modifiers)) { $sorters = explode(',', $modifiers); foreach ($sorters as $sorter) { $direction = Criteria::ASC; From 70c9d2a233d4c636d34018e9b4b4df9298777639 Mon Sep 17 00:00:00 2001 From: Steve Mareigner Date: Mon, 4 Dec 2017 10:29:49 +0100 Subject: [PATCH 2/2] fix(api): Easy sorter Error when modifier is already an array --- .../QueryModifier/Modifier/SortModifier.php | 2 +- .../Modifier/SortModifierTest.php | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Service/Request/QueryModifier/Modifier/SortModifier.php b/src/Service/Request/QueryModifier/Modifier/SortModifier.php index e94ae84..2b81d66 100644 --- a/src/Service/Request/QueryModifier/Modifier/SortModifier.php +++ b/src/Service/Request/QueryModifier/Modifier/SortModifier.php @@ -40,7 +40,7 @@ public function setModifierFromRequest(ServerRequestInterface $request) } # Handle non JSON string, this is what we need ! - if (!is_string($modifiers) || null === json_decode($modifiers)) { + if (is_string($modifiers) && null === json_decode($modifiers)) { $sorters = explode(',', $modifiers); foreach ($sorters as $sorter) { $direction = Criteria::ASC; diff --git a/tests/Service/Request/QueryModifier/Modifier/SortModifierTest.php b/tests/Service/Request/QueryModifier/Modifier/SortModifierTest.php index 619c688..05839b9 100644 --- a/tests/Service/Request/QueryModifier/Modifier/SortModifierTest.php +++ b/tests/Service/Request/QueryModifier/Modifier/SortModifierTest.php @@ -82,6 +82,25 @@ public function testApplyMulti() $this->assertEquals('modifier_test.column2 ASC', $mc->getOrderByColumns()[1]); } + public function testSetModifierFromRequest() + { + $r = new Request(["sort" => ["property" => "name"], "foo" => "bar"]); + $m = new SortModifier($r); + $m->setModifierFromRequest($r); + $this->assertSame(["property" => "name"], $m->getModifier('name')); + + $r = new Request(["sort" => "-name", "foo" => "bar"]); + $m = new SortModifier($r); + $m->setModifierFromRequest($r); + $this->assertSame(["property" => "name", "direction" => "DESC"], $m->getModifier('name')); + + $r = new Request(["sort" => "-name,foo"]); + $m = new SortModifier($r); + $m->setModifierFromRequest($r); + $this->assertSame(["property" => "name", "direction" => "DESC"], $m->getModifier('name')); + $this->assertSame(["property" => "foo", "direction" => "ASC"], $m->getModifier('foo')); + } + public function testApplyOnInexistentField() { $m = new SortModifier(new Request(["sort" => json_encode(["property" => "notFound"])]));