|
20 | 20 | use Symfony\Component\DependencyInjection\Reference; |
21 | 21 | use Symfony\Component\HttpFoundation\Request; |
22 | 22 | use Symfony\Component\HttpFoundation\Response; |
| 23 | +use Symfony\Component\HttpKernel\HttpKernelInterface; |
23 | 24 | use Symfony\Component\HttpKernel\Kernel; |
24 | 25 | use Symfony\Component\HttpKernel\Log\Logger; |
25 | 26 | use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; |
|
30 | 31 | use Symfony\WebpackEncoreBundle\CacheWarmer\EntrypointCacheWarmer; |
31 | 32 | use Symfony\WebpackEncoreBundle\Twig\StimulusTwigExtension; |
32 | 33 | use Symfony\WebpackEncoreBundle\WebpackEncoreBundle; |
| 34 | +use Twig\Environment; |
33 | 35 |
|
34 | 36 | class IntegrationTest extends TestCase |
35 | 37 | { |
@@ -100,6 +102,27 @@ public function testEntriesAreNotRepeatedWhenAlreadyOutputIntegration() |
100 | 102 | ); |
101 | 103 | } |
102 | 104 |
|
| 105 | + public function testEntriesExistsWhenDoingSubRequestIntegration() |
| 106 | + { |
| 107 | + $kernel = new WebpackEncoreIntegrationTestKernel(true); |
| 108 | + $kernel->boot(); |
| 109 | + |
| 110 | + $request = Request::create('/render-sub-requests'); |
| 111 | + $request->attributes->set('template', '@integration_test/template.twig'); |
| 112 | + $response = $kernel->handle($request); |
| 113 | + |
| 114 | + $html = $response->getContent(); |
| 115 | + |
| 116 | + $containsCount0 = substr_count($html, '<script src="/build/file1.js"'); |
| 117 | + $this->assertSame(2, $containsCount0); |
| 118 | + |
| 119 | + $containsCount1 = substr_count($html, '<link rel="stylesheet" href="/build/styles3.css"'); |
| 120 | + $this->assertSame(2, $containsCount1); |
| 121 | + |
| 122 | + $containsCount2 = substr_count($html, '<link rel="stylesheet" href="/build/styles4.css"'); |
| 123 | + $this->assertSame(2, $containsCount2); |
| 124 | + } |
| 125 | + |
103 | 126 | public function testCacheWarmer() |
104 | 127 | { |
105 | 128 | $kernel = new WebpackEncoreIntegrationTestKernel(true); |
@@ -390,24 +413,43 @@ public function renderFoo() |
390 | 413 | { |
391 | 414 | return new Response('I am a page!'); |
392 | 415 | } |
| 416 | + |
| 417 | + public function renderSubRequests(Request $request, HttpKernelInterface $httpKernel) |
| 418 | + { |
| 419 | + $subRequest = Request::create('/render'); |
| 420 | + $subRequest->attributes->set('template', $request->attributes->get('template')); |
| 421 | + |
| 422 | + $response0 = $httpKernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST); |
| 423 | + $response1 = $httpKernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST); |
| 424 | + |
| 425 | + return new Response($response0->getContent() . $response1->getContent()); |
| 426 | + } |
| 427 | + |
| 428 | + public function renderTwig(Environment $twig, Request $request) |
| 429 | + { |
| 430 | + return new Response($twig->render($request->attributes->get('template'))); |
| 431 | + } |
393 | 432 | } |
394 | 433 |
|
395 | | -if (AbstractWebpackEncoreIntegrationTestKernel::VERSION_ID >= 50100) { |
396 | | - class WebpackEncoreIntegrationTestKernel extends AbstractWebpackEncoreIntegrationTestKernel { |
397 | | - protected function configureRouting(RoutingConfigurator $routes): void |
398 | | - { |
399 | | - $routes->add('/foo', 'kernel::renderFoo'); |
400 | | - } |
| 434 | + |
| 435 | +class WebpackEncoreIntegrationTestKernel extends AbstractWebpackEncoreIntegrationTestKernel |
| 436 | +{ |
| 437 | + protected function configureRouting(RoutingConfigurator $routes): void |
| 438 | + { |
| 439 | + $routes->add('/foo', 'kernel::renderFoo'); |
| 440 | + $routes->add('/render', 'kernel::renderTwig'); |
| 441 | + $routes->add('/render-sub-requests', 'kernel::renderSubRequests'); |
401 | 442 | } |
402 | | -} else { |
403 | | - class WebpackEncoreIntegrationTestKernel extends AbstractWebpackEncoreIntegrationTestKernel { |
404 | | - protected function configureRoutes(RouteCollectionBuilder $routes) |
405 | | - { |
406 | | - $routes->add('/foo', 'kernel:'.(parent::VERSION_ID >= 40100 ? ':' : '').'renderFoo'); |
407 | | - } |
| 443 | + |
| 444 | + protected function configureRoutes(RouteCollectionBuilder $routes) |
| 445 | + { |
| 446 | + $routes->add('/foo', 'kernel:'.(parent::VERSION_ID >= 40100 ? ':' : '').'renderFoo'); |
| 447 | + $routes->add('/render', 'kernel:'.(parent::VERSION_ID >= 40100 ? ':' : '').'renderTwig'); |
| 448 | + $routes->add('/render-sub-requests', 'kernel:'.(parent::VERSION_ID >= 40100 ? ':' : '').'renderSubRequests'); |
408 | 449 | } |
409 | 450 | } |
410 | 451 |
|
| 452 | + |
411 | 453 | class WebpackEncoreCacheWarmerTester |
412 | 454 | { |
413 | 455 | private $entrypointCacheWarmer; |
|
0 commit comments