/** * @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__ . '.'); }