public function testIsCompleteReturnsTrueWhenUrlIsSet() { $link = new Link('describedby'); $link->setUrl('http://example.com/api/docs.html'); $this->assertTrue($link->isComplete()); }
/** * @group 71 */ public function testRenderingCollectionRendersAllLinksInEmbeddedResources() { $embedded = new HalResource((object) array('id' => 'foo', 'name' => 'foo'), 'foo'); $links = $embedded->getLinks(); $self = new Link('self'); $self->setRoute('hostname/users', array('id' => 'foo')); $links->add($self); $phones = new Link('phones'); $phones->setUrl('http://localhost.localdomain/users/foo/phones'); $links->add($phones); $collection = new HalCollection(array($embedded)); $collection->setCollectionName('users'); $self = new Link('self'); $self->setRoute('hostname/users'); $collection->getLinks()->add($self); $rendered = $this->plugin->renderCollection($collection); $this->assertRelationalLinkContains('/users', 'self', $rendered); $this->assertArrayHasKey('_embedded', $rendered); $this->assertInternalType('array', $rendered['_embedded']); $this->assertArrayHasKey('users', $rendered['_embedded']); $users = $rendered['_embedded']['users']; $this->assertInternalType('array', $users); $user = array_shift($users); $this->assertRelationalLinkContains('/users/foo', 'self', $user); $this->assertRelationalLinkContains('/users/foo/phones', 'phones', $user); }
/** * Creates a link object, given metadata and a resource * * @param Metadata $metadata * @param object $object * @param string $id * @param string $identifierName * @return Link * @throws Exception\RuntimeException */ protected function marshalSelfLinkFromMetadata(Metadata $metadata, $object, $id, $identifierName) { $link = new Link('self'); if ($metadata->hasUrl()) { $link->setUrl($metadata->getUrl()); return $link; } if (!$metadata->hasRoute()) { throw new Exception\RuntimeException(sprintf('Unable to create a self link for resource of type "%s"; metadata does not contain a route or a url', get_class($object))); } $params = array_merge($metadata->getRouteParams(), array($identifierName => $id)); $link->setRoute($metadata->getRoute(), $params, $metadata->getRouteOptions()); return $link; }