From 434d4bc7263dc379c804da0a19b9f7ba4dfad4ec Mon Sep 17 00:00:00 2001 From: Pascal Paulis Date: Tue, 19 Apr 2022 16:22:00 +0200 Subject: [PATCH 1/4] #27 using "Laminas\Stdlib\Parameters" as default parameter for fetchAll() method Signed-off-by: Pascal Paulis --- src/AbstractResourceListener.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/AbstractResourceListener.php b/src/AbstractResourceListener.php index 1873885..736ff78 100644 --- a/src/AbstractResourceListener.php +++ b/src/AbstractResourceListener.php @@ -11,6 +11,7 @@ use Laminas\EventManager\ListenerAggregateTrait; use Laminas\InputFilter\InputFilterInterface; +use Laminas\Stdlib\Parameters; use function sprintf; abstract class AbstractResourceListener implements ListenerAggregateInterface @@ -180,7 +181,7 @@ public function dispatch(ResourceEvent $event) $id = $event->getParam('id', null); return $this->fetch($id); case 'fetchAll': - $queryParams = $event->getQueryParams() ?: []; + $queryParams = $event->getQueryParams() ?: new Parameters(); return $this->fetchAll($queryParams); case 'patch': $id = $event->getParam('id', null); @@ -252,10 +253,10 @@ public function fetch($id) /** * Fetch all or a subset of resources * - * @param array $params + * @param Parameters $params * @return ApiProblem|mixed */ - public function fetchAll($params = []) + public function fetchAll(Parameters $params) { return new ApiProblem(405, 'The GET method has not been defined for collections'); } From 1336434914390f9c1275e2ffbc93201f730cafe9 Mon Sep 17 00:00:00 2001 From: Pascal Paulis Date: Tue, 19 Apr 2022 17:48:17 +0200 Subject: [PATCH 2/4] #27 reverted to untyped parameter in fetchAll(), but added missing type to docblock Signed-off-by: Pascal Paulis --- src/AbstractResourceListener.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/AbstractResourceListener.php b/src/AbstractResourceListener.php index 736ff78..ec76c51 100644 --- a/src/AbstractResourceListener.php +++ b/src/AbstractResourceListener.php @@ -181,7 +181,7 @@ public function dispatch(ResourceEvent $event) $id = $event->getParam('id', null); return $this->fetch($id); case 'fetchAll': - $queryParams = $event->getQueryParams() ?: new Parameters(); + $queryParams = $event->getQueryParams() ?: []; return $this->fetchAll($queryParams); case 'patch': $id = $event->getParam('id', null); @@ -253,10 +253,10 @@ public function fetch($id) /** * Fetch all or a subset of resources * - * @param Parameters $params + * @param array|Parameters $params * @return ApiProblem|mixed */ - public function fetchAll(Parameters $params) + public function fetchAll($params = []) { return new ApiProblem(405, 'The GET method has not been defined for collections'); } From 64c8273dd119d8bf68be486b27a2e40d22b5d1bd Mon Sep 17 00:00:00 2001 From: Pascal Paulis Date: Tue, 19 Apr 2022 19:41:53 +0200 Subject: [PATCH 3/4] #27 added missing test case for empty array default parameter if no query params are set Signed-off-by: Pascal Paulis --- test/AbstractResourceListenerTest.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/AbstractResourceListenerTest.php b/test/AbstractResourceListenerTest.php index 0416372..2378386 100644 --- a/test/AbstractResourceListenerTest.php +++ b/test/AbstractResourceListenerTest.php @@ -133,4 +133,17 @@ public function testDispatchShouldPassWhitelistedQueryParamsToFetchAllMethod() $this->assertEquals($queryParams, $this->listener->testCase->paramsPassedToListener); } + + /** + * @group 7 + */ + public function testDispatchShouldPassEmptyArrayToFetchAllMethodIfNoQueryParamsArePresent() + { + $event = new ResourceEvent(); + $event->setName('fetchAll'); + + $this->listener->dispatch($event); + + $this->assertEquals([], $this->listener->testCase->paramsPassedToListener); + } } From 2174bc946d2fb0edc52732531f3f74cb78757383 Mon Sep 17 00:00:00 2001 From: Pascal Paulis Date: Tue, 19 Apr 2022 23:34:29 +0200 Subject: [PATCH 4/4] #27 fixed code style Signed-off-by: Pascal Paulis --- src/AbstractResourceListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AbstractResourceListener.php b/src/AbstractResourceListener.php index ec76c51..8222c21 100644 --- a/src/AbstractResourceListener.php +++ b/src/AbstractResourceListener.php @@ -10,8 +10,8 @@ use Laminas\EventManager\ListenerAggregateInterface; use Laminas\EventManager\ListenerAggregateTrait; use Laminas\InputFilter\InputFilterInterface; - use Laminas\Stdlib\Parameters; + use function sprintf; abstract class AbstractResourceListener implements ListenerAggregateInterface