コード例 #1
0
 public function testResourcesFromCollectionCanUseHydratorSetInMetadataMap()
 {
     $object = new TestAsset\ResourceWithProtectedProperties('foo', 'Foo');
     $resource = new HalResource($object, 'foo');
     $metadata = new MetadataMap(array('PhlyRestfullyTest\\Plugin\\TestAsset\\ResourceWithProtectedProperties' => array('hydrator' => 'ArraySerializable', 'route' => 'hostname/resource')));
     $collection = new HalCollection(array($resource));
     $collection->setCollectionName('resource');
     $collection->setCollectionRoute('hostname/resource');
     $this->plugin->setMetadataMap($metadata);
     $test = $this->plugin->renderCollection($collection);
     $this->assertInternalType('array', $test);
     $this->assertArrayHasKey('_embedded', $test);
     $this->assertInternalType('array', $test['_embedded']);
     $this->assertArrayHasKey('resource', $test['_embedded']);
     $this->assertInternalType('array', $test['_embedded']['resource']);
     $resources = $test['_embedded']['resource'];
     $testResource = array_shift($resources);
     $this->assertInternalType('array', $testResource);
     $this->assertArrayHasKey('id', $testResource);
     $this->assertArrayHasKey('name', $testResource);
 }
コード例 #2
0
 public function halObjects()
 {
     $resource = new HalResource(array('foo' => 'bar'), 'identifier', 'route');
     $link = new Link('self');
     $link->setRoute('resource/route')->setRouteParams(array('id' => 'identifier'));
     $resource->getLinks()->add($link);
     $collection = new HalCollection(array($resource));
     $collection->setCollectionRoute('collection/route');
     $collection->setResourceRoute('resource/route');
     return array('resource' => array($resource), 'collection' => array($collection));
 }
コード例 #3
0
 /**
  * @param  object $object
  * @param  Metadata $metadata
  * @return HalCollection
  */
 public function createCollectionFromMetadata($object, Metadata $metadata)
 {
     $collection = new HalCollection($object);
     $collection->setCollectionRoute($metadata->getRoute());
     $collection->setResourceRoute($metadata->getResourceRoute());
     $collection->setIdentifierName($metadata->getIdentifierName());
     $this->marshalMetadataLinks($metadata, $collection->getLinks());
     return $collection;
 }
コード例 #4
0
 public function setUpChildCollection()
 {
     $children = array(array('luke', 'Luke Skywalker'), array('leia', 'Leia Organa'));
     $this->collection = array();
     foreach ($children as $info) {
         $collection[] = call_user_func_array(array($this, 'setUpChildResource'), $info);
     }
     $collection = new HalCollection($this->collection);
     $collection->setCollectionRoute('parent/child');
     $collection->setResourceRoute('parent/child');
     $collection->setPage(1);
     $collection->setPageSize(10);
     $collection->setCollectionName('child');
     $link = new Link('self');
     $link->setRoute('parent/child');
     $collection->getLinks()->add($link);
     return $collection;
 }
コード例 #5
0
 public function testAllowsSpecifyingAlternateCallbackForReturningResourceId()
 {
     $this->setUpHelpers();
     $this->helpers->get('HalLinks')->getEventManager()->attach('getIdFromResource', function ($e) {
         $resource = $e->getParam('resource');
         if (!is_array($resource)) {
             return false;
         }
         if (array_key_exists('name', $resource)) {
             return $resource['name'];
         }
         return false;
     }, 10);
     $prototype = array('foo' => 'bar');
     $items = array();
     foreach (range(1, 100) as $id) {
         $item = $prototype;
         $item['name'] = $id;
         $items[] = $item;
     }
     $collection = new HalCollection($items);
     $collection->setCollectionRoute('resource');
     $collection->setResourceRoute('resource');
     $links = $collection->getLinks();
     $self = new Link('self');
     $self->setRoute('resource');
     $links->add($self);
     $model = new RestfulJsonModel(array('payload' => $collection));
     $test = $this->renderer->render($model);
     $test = json_decode($test);
     $this->assertInstanceof('stdClass', $test, var_export($test, 1));
     $this->assertRelationalLinkEquals('http://localhost.localdomain/resource', 'self', $test);
     $this->assertObjectHasAttribute('_embedded', $test);
     $this->assertInstanceof('stdClass', $test->_embedded);
     $this->assertObjectHasAttribute('items', $test->_embedded);
     $this->assertInternalType('array', $test->_embedded->items);
     $this->assertEquals(100, count($test->_embedded->items));
     foreach ($test->_embedded->items as $key => $item) {
         $id = $key + 1;
         $this->assertRelationalLinkEquals('http://localhost.localdomain/resource/' . $id, 'self', $item);
         $this->assertObjectHasAttribute('name', $item, var_export($item, 1));
         $this->assertEquals($id, $item->name);
         $this->assertObjectHasAttribute('foo', $item);
         $this->assertEquals('bar', $item->foo);
     }
 }