From f941caf514feb26b0aca4d8ed95b2daa8ed751f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Gallego?= Date: Mon, 17 Mar 2014 14:03:22 +0100 Subject: [PATCH] Bring more flexibility to the interface --- .../View/Renderer/DefaultResourceRenderer.php | 13 ++++++++++--- .../View/Renderer/ResourceRendererInterface.php | 8 ++++---- .../Http/Matcher/AssociationSubPathMatcherTest.php | 5 +---- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/ZfrRest/View/Renderer/DefaultResourceRenderer.php b/src/ZfrRest/View/Renderer/DefaultResourceRenderer.php index c1d039a..dc1660f 100644 --- a/src/ZfrRest/View/Renderer/DefaultResourceRenderer.php +++ b/src/ZfrRest/View/Renderer/DefaultResourceRenderer.php @@ -122,7 +122,14 @@ public function render($nameOrModel, $values = null) throw new RuntimeException('Resource renderer expect a ResourceModel instance'); } - $resource = $nameOrModel->getResource(); + return $this->renderResource($nameOrModel->getResource()); + } + + /** + * {@inheritDoc} + */ + public function renderResource(ResourceInterface $resource) + { $data = $resource->getData(); $resourceMetadata = $resource->getMetadata(); @@ -156,7 +163,7 @@ public function render($nameOrModel, $values = null) * @param ResourceMetadataInterface $resourceMetadata * @return array */ - public function renderItem($object, ResourceMetadataInterface $resourceMetadata) + protected function renderItem($object, ResourceMetadataInterface $resourceMetadata) { /** @var \Zend\Stdlib\Hydrator\HydratorInterface $hydrator */ $hydrator = $this->hydratorPluginManager->get($resourceMetadata->getHydratorName()); @@ -261,7 +268,7 @@ protected function renderAssociation($object, $targetClass, $extractionStrategy, foreach ($object as $datum) { $associationResource = new Resource($datum, $associationResourceMetadata); - $embedded[] = $this->render(new ResourceModel($associationResource)); + $embedded[] = $this->renderResource($associationResource); } $association = $embedded; diff --git a/src/ZfrRest/View/Renderer/ResourceRendererInterface.php b/src/ZfrRest/View/Renderer/ResourceRendererInterface.php index a5c8b9f..ff557c8 100644 --- a/src/ZfrRest/View/Renderer/ResourceRendererInterface.php +++ b/src/ZfrRest/View/Renderer/ResourceRendererInterface.php @@ -20,6 +20,7 @@ use Zend\View\Renderer\RendererInterface; use ZfrRest\Resource\Metadata\ResourceMetadataInterface; +use ZfrRest\Resource\ResourceInterface; /** * Interface for all resource renderers @@ -30,11 +31,10 @@ interface ResourceRendererInterface extends RendererInterface { /** - * Render a single item + * Render a resource * - * @param object $object - * @param ResourceMetadataInterface $resourceMetadata + * @param ResourceInterface $resource * @return array */ - public function renderItem($object, ResourceMetadataInterface $resourceMetadata); + public function renderResource(ResourceInterface $resource); } diff --git a/tests/ZfrRestTest/Router/Http/Matcher/AssociationSubPathMatcherTest.php b/tests/ZfrRestTest/Router/Http/Matcher/AssociationSubPathMatcherTest.php index 0f6e472..d287b71 100644 --- a/tests/ZfrRestTest/Router/Http/Matcher/AssociationSubPathMatcherTest.php +++ b/tests/ZfrRestTest/Router/Http/Matcher/AssociationSubPathMatcherTest.php @@ -140,13 +140,10 @@ public function testCanMatchAssociation($subPath, $associationPath, $propertyNam $associationMetadata = $this->getMock('ZfrRest\Resource\Metadata\ResourceMetadataInterface'); - $classHierarchy = $this->getMock('Metadata\ClassHierarchyMetadata'); - $classHierarchy->expects($this->once())->method('getOutsideClassMetadata')->will($this->returnValue($associationMetadata)); - $this->metadataFactory->expects($this->once()) ->method('getMetadataForClass') ->with('ZfrRestTest\Asset\Router\AssociationMatcherEntity') - ->will($this->returnValue($classHierarchy)); + ->will($this->returnValue($associationMetadata)); $metadata->expects($this->once()) ->method('getReflectionClass')