c72e471c65
HttpContentRenderer has been renamed to FragmentHandler. The RendererStrategy subnamespace has been renamed to Fragment. The strategy classes now have Fragment in their names. ProxyRouterListener has been renamed to FragmentListener The router_proxy configuration entry has been renamed to fragments.
64 lines
2.6 KiB
PHP
64 lines
2.6 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* 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\FragmentRenderer;
|
|
|
|
use Symfony\Component\HttpKernel\Controller\ControllerReference;
|
|
use Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer;
|
|
use Symfony\Component\HttpKernel\HttpCache\Esi;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
|
|
class EsiFragmentRendererTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
protected function setUp()
|
|
{
|
|
if (!class_exists('Symfony\Component\HttpFoundation\Request')) {
|
|
$this->markTestSkipped('The "HttpFoundation" component is not available');
|
|
}
|
|
}
|
|
|
|
public function testRenderFallbackToInlineStrategyIfNoRequest()
|
|
{
|
|
$strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(true));
|
|
$strategy->render('/', Request::create('/'));
|
|
}
|
|
|
|
public function testRenderFallbackToInlineStrategyIfEsiNotSupported()
|
|
{
|
|
$strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(true));
|
|
$strategy->render('/', Request::create('/'));
|
|
}
|
|
|
|
public function testRender()
|
|
{
|
|
$strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy());
|
|
|
|
$request = Request::create('/');
|
|
$request->headers->set('Surrogate-Capability', 'ESI/1.0');
|
|
|
|
$this->assertEquals('<esi:include src="/" />', $strategy->render('/', $request)->getContent());
|
|
$this->assertEquals("<esi:comment text=\"This is a comment\" />\n<esi:include src=\"/\" />", $strategy->render('/', $request, array('comment' => 'This is a comment'))->getContent());
|
|
$this->assertEquals('<esi:include src="/" alt="foo" />', $strategy->render('/', $request, array('alt' => 'foo'))->getContent());
|
|
$this->assertEquals('<esi:include src="http://localhost/_fragment?_path=_format%3Dhtml%26_controller%3Dmain_controller" alt="http://localhost/_fragment?_path=_format%3Dhtml%26_controller%3Dalt_controller" />', $strategy->render(new ControllerReference('main_controller', array(), array()), $request, array('alt' => new ControllerReference('alt_controller', array(), array())))->getContent());
|
|
}
|
|
|
|
private function getInlineStrategy($called = false)
|
|
{
|
|
$inline = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer')->disableOriginalConstructor()->getMock();
|
|
|
|
if ($called) {
|
|
$inline->expects($this->once())->method('render');
|
|
}
|
|
|
|
return $inline;
|
|
}
|
|
}
|