* * 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:----F4RWIMSv0tQV3d3tfpOXgTUz+WxAKt7ZG8Bc3N875DAmc+EZ7N+9FEAKy0iRe2T8SP4ldg6NN9RHFbGoXYHcMY2kJFvutzpfU7Inm7DsqmxVmIqxdj85vXGTxSSQhwLRL5doVDNgkaksPrkW9srC8niLPLp7oQsa4QqH8VcCmKhrWA8qzupjROMGbRNf1RIir2pgmI1a0X+7eDe7si0rCzUEE0b56ObMkB3utn9FOZ5xYGkW5IcyhhyhjYkSYO2kwR/sEQc346qn9IcX/r/voPA/7ljDiohO3mE4rdm2gdFkAMoiH/+nMtHjznk7kBMzJxXNJEy2UsME+Vxzkp2fQffxdP5Mo63949chBMXHAYpZ/gB3Ae99grX+bfFuDPbM5kyg2gjYDF+8I1/K+ctF/Qov+Cfaj4Vm1IS5LAaisGEfPI0nrBDgpeYuI6oSzTRXJGASF+SjiALKYEFyS9gc/WVZNi3lUagKpVsTRRcuYrSNqP85Cf97y3TbuLWexTic6s9NUInRFxRFfu8Uoehw6sH32wNhXpBZHO+P3aYQ2y6CBK0c+aGSkzmImVn5lb549z1O2+b0cAs5STF9lClNG+dPbZ54M2m3XwO3BRj+m2JgYxvoZAvUOtpe2rxM7/ax1cMQbAfqUfn6+PBdoA65tXRApf2q+pg45L9iL+uj2UU=----ATTACHMENT:----MjMyNzY4MDIyMjQ0OTQ2NSA5Mjg2OTE3OTcwMTI2MzE0IDQ4MjUwMDA2MjQ4OTYyNjU=