|
17 | 17 | use Symfony\Bridge\Twig\Tests\Fixtures\TemplateAttributeController;
|
18 | 18 | use Symfony\Component\Form\FormInterface;
|
19 | 19 | use Symfony\Component\HttpFoundation\Request;
|
| 20 | +use Symfony\Component\HttpFoundation\StreamedResponse; |
20 | 21 | use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
|
21 | 22 | use Symfony\Component\HttpKernel\Event\ViewEvent;
|
22 | 23 | use Symfony\Component\HttpKernel\HttpKernelInterface;
|
23 | 24 | use Twig\Environment;
|
| 25 | +use Twig\Loader\ArrayLoader; |
24 | 26 |
|
25 | 27 | class TemplateAttributeListenerTest extends TestCase
|
26 | 28 | {
|
@@ -65,6 +67,33 @@ public function testAttribute()
|
65 | 67 | $this->assertSame('Bar', $event->getResponse()->getContent());
|
66 | 68 | }
|
67 | 69 |
|
| 70 | + public function testAttributeWithBlock() |
| 71 | + { |
| 72 | + $twig = new Environment(new ArrayLoader([ |
| 73 | + 'foo.html.twig' => 'ERROR {% block bar %}FOOBAR{% endblock %}', |
| 74 | + ])); |
| 75 | + |
| 76 | + $request = new Request(); |
| 77 | + $kernel = $this->createMock(HttpKernelInterface::class); |
| 78 | + $controllerArgumentsEvent = new ControllerArgumentsEvent($kernel, [new TemplateAttributeController(), 'foo'], ['Bar'], $request, null); |
| 79 | + $listener = new TemplateAttributeListener($twig); |
| 80 | + |
| 81 | + $request->attributes->set('_template', new Template('foo.html.twig', [], false, 'bar')); |
| 82 | + $event = new ViewEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, ['foo' => 'bar'], $controllerArgumentsEvent); |
| 83 | + $listener->onKernelView($event); |
| 84 | + $this->assertSame('FOOBAR', $event->getResponse()->getContent()); |
| 85 | + |
| 86 | + $request->attributes->set('_template', new Template('foo.html.twig', [], true, 'bar')); |
| 87 | + $event = new ViewEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, ['foo' => 'bar'], $controllerArgumentsEvent); |
| 88 | + $listener->onKernelView($event); |
| 89 | + $this->assertInstanceOf(StreamedResponse::class, $event->getResponse()); |
| 90 | + |
| 91 | + $request->attributes->set('_template', new Template('foo.html.twig', [], false, 'not_a_block')); |
| 92 | + $event = new ViewEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, ['foo' => 'bar'], $controllerArgumentsEvent); |
| 93 | + $this->expectExceptionMessage('Block "not_a_block" on template "foo.html.twig" does not exist in "foo.html.twig".'); |
| 94 | + $listener->onKernelView($event); |
| 95 | + } |
| 96 | + |
68 | 97 | public function testForm()
|
69 | 98 | {
|
70 | 99 | $request = new Request();
|
|
0 commit comments