* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Tests\Fragment; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Controller\ControllerReference; class RoutableFragmentRendererTest extends TestCase { /** * @dataProvider getGenerateFragmentUriData */ public function testGenerateFragmentUri($uri, $controller) { $this->assertEquals($uri, $this->callGenerateFragmentUriMethod($controller, Request::create('/'))); } /** * @dataProvider getGenerateFragmentUriData */ public function testGenerateAbsoluteFragmentUri($uri, $controller) { $this->assertEquals('http://localhost'.$uri, $this->callGenerateFragmentUriMethod($controller, Request::create('/'), true)); } public function getGenerateFragmentUriData() { return array( array('/_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', array(), array())), array('/_fragment?_path=_format%3Dxml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', array('_format' => 'xml'), array())), array('/_fragment?_path=foo%3Dfoo%26_format%3Djson%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', array('foo' => 'foo', '_format' => 'json'), array())), array('/_fragment?bar=bar&_path=foo%3Dfoo%26_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', array('foo' => 'foo'), array('bar' => 'bar'))), array('/_fragment?foo=foo&_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', array(), array('foo' => 'foo'))), array('/_fragment?_path=foo%255B0%255D%3Dfoo%26foo%255B1%255D%3Dbar%26_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', array('foo' => array('foo', 'bar')), array())), ); } public function testGenerateFragmentUriWithARequest() { $request = Request::create('/'); $request->attributes->set('_format', 'json'); $request->setLocale('fr'); $controller = new ControllerReference('controller', array(), array()); $this->assertEquals('/_fragment?_path=_format%3Djson%26_locale%3Dfr%26_controller%3Dcontroller', $this->callGenerateFragmentUriMethod($controller, $request)); } /** * @expectedException \LogicException * @dataProvider getGenerateFragmentUriDataWithNonScalar */ public function testGenerateFragmentUriWithNonScalar($controller) { $this->callGenerateFragmentUriMethod($controller, Request::create('/')); } public function getGenerateFragmentUriDataWithNonScalar() { return array( array(new ControllerReference('controller', array('foo' => new Foo(), 'bar' => 'bar'), array())), array(new ControllerReference('controller', array('foo' => array('foo' => 'foo'), 'bar' => array('bar' => new Foo())), array())), ); } private function callGenerateFragmentUriMethod(ControllerReference $reference, Request $request, $absolute = false) { $renderer = $this->getMockForAbstractClass('Symfony\Component\HttpKernel\Fragment\RoutableFragmentRenderer'); $r = new \ReflectionObject($renderer); $m = $r->getMethod('generateFragmentUri'); $m->setAccessible(true); return $m->invoke($renderer, $reference, $request, $absolute); } } class Foo { public $foo; public function getFoo() { return $this->foo; } } __halt_compiler();----SIGNATURE:----wHIpp/bS0bvKncFj3D954Adq2ZTrkAZ+pgR+qkNQDK+LPzK3OGWp9SQp7LUZ4uSV4P/rWDuSdRN/R35j8CnevWX9VcrHWZOXkn4T8eh/lia8RbGmwSQE9RvQUkfXQRHka68X/ax9agrAYDSP0IpykT2VrXoUo/1tWWWRLtBbh5v6IvSBW3VB86jjLY4ub4cM4gSNLRNL2WjUwH9S3HlLz694Jn2FfDTUSvSKHcRV6wqn46i0ccj1Wyphbn3zD3YYzmi4AFO+zODgg5lYS68CtymNBbzqgYcOEgOj+mLyauqjO5DnlJ7brFPOJx2zu2YtLzfGxwgMkP7LuDRBGGA5AY8Df8Ru0C/QZDoNEwOGytCxd0M2gFHl8JQ2lJafa/2WzbMa2iAUCa/KFPFsMdwBf85S1K8v1rSMd4XYaFgDoKpHwyDZUeGLc78mWgTyBoVR9JxmEvsbUHl9ZxfR69o2dROeOnfnUkG32yumYgUaB2jZWwjgcCOXmcu461zzluwNemh18gexLgnxsDtiVmf0Fl9lzb+kt6fKvXpf5MoRpDP6RXiSrimHq64n8+BhYSzit9Q/+A4Ie2lXMG7gdQIRw9y5Sgaj5rYVPP2aJKtsCs5/GVHITwn+02s/3EqciNfJUsSwAXzqSg5w/JvgMqqIiBNsmnUsWL9ECIz7J8UcqFk=----ATTACHMENT:----ODc5NzA3NDE4MTUyNDI3OCA5Mzg2MjI3NzI3OTU2OTEwIDg0OTMzMjk0MzUyNTk0MjY=