См. также: http://stateless.co/hal_specification.html
Наследование: implements FOF30\Hal\Render\RenderInterface
Пример #1
0
 /**
  * @covers FOF30\Hal\Render\Json::render
  */
 public function testRender()
 {
     $renderer = new Json($this->document);
     // Full render
     $expected = '{"_links":{"prev":{"href":"http:\\/\\/www.example.com\\/test.json?page=1"},"next":{"href":"http:\\/\\/www.example.com\\/test.json?page=3"}},"_embedded":{"detail":["{\\"_links\\":{},\\"_list\\":{\\"detail1_1\\":\\"val1_1\\",\\"detail1_2\\":\\"val1_2\\"}}","{\\"_links\\":{},\\"_list\\":{\\"detail2_1\\":\\"val2_1\\",\\"detail2_2\\":\\"val2_2\\"}}"]},"_list":{"key1":"val1","key2":"val2"}}';
     $rendered = $renderer->render();
     $this->assertEquals($expected, $rendered, 'Line: ' . __LINE__ . '.');
     // Without embedded documents
     $document = $this->getObjectAttribute($renderer, '_document');
     ReflectionHelper::setValue($document, '_embedded', null);
     ReflectionHelper::setValue($renderer, '_document', $document);
     $expected = '{"_links":{"prev":{"href":"http:\\/\\/www.example.com\\/test.json?page=1"},"next":{"href":"http:\\/\\/www.example.com\\/test.json?page=3"}},"_list":{"key1":"val1","key2":"val2"}}';
     $rendered = $renderer->render();
     $this->assertEquals($expected, $rendered, 'Line: ' . __LINE__ . '.');
     // With list of links
     $foo = new Link('http://www.example.com/foo.json?arg=1', false);
     $document->addLink('foo', $foo);
     $foo = new Link('http://www.example.com/foo.json?arg=1', false);
     $document->addLink('foo', $foo);
     ReflectionHelper::setValue($renderer, '_document', $document);
     $expected = '{"_links":{"prev":{"href":"http:\\/\\/www.example.com\\/test.json?page=1"},"next":{"href":"http:\\/\\/www.example.com\\/test.json?page=3"},"foo":{"href":"http:\\/\\/www.example.com\\/foo.json?arg=1"}},"_list":{"key1":"val1","key2":"val2"}}';
     $rendered = $renderer->render();
     $this->assertEquals($expected, $rendered, 'Line: ' . __LINE__ . '.');
 }