2020use Symfony \Component \DependencyInjection \Reference ;
2121use Symfony \Component \HttpFoundation \Request ;
2222use Symfony \Component \HttpFoundation \Response ;
23+ use Symfony \Component \HttpKernel \HttpKernelInterface ;
2324use Symfony \Component \HttpKernel \Kernel ;
2425use Symfony \Component \HttpKernel \Log \Logger ;
2526use Symfony \Component \Routing \Loader \Configurator \RoutingConfigurator ;
3031use Symfony \WebpackEncoreBundle \CacheWarmer \EntrypointCacheWarmer ;
3132use Symfony \WebpackEncoreBundle \Twig \StimulusTwigExtension ;
3233use Symfony \WebpackEncoreBundle \WebpackEncoreBundle ;
34+ use Twig \Environment ;
3335
3436class IntegrationTest extends TestCase
3537{
@@ -100,6 +102,27 @@ public function testEntriesAreNotRepeatedWhenAlreadyOutputIntegration()
100102 );
101103 }
102104
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+
103126 public function testCacheWarmer ()
104127 {
105128 $ kernel = new WebpackEncoreIntegrationTestKernel (true );
@@ -524,6 +547,22 @@ public function renderFoo()
524547 {
525548 return new Response ('I am a page! ' );
526549 }
550+
551+ public function renderSubRequests (Request $ request , HttpKernelInterface $ httpKernel )
552+ {
553+ $ subRequest = Request::create ('/render ' );
554+ $ subRequest ->attributes ->set ('template ' , $ request ->attributes ->get ('template ' ));
555+
556+ $ response0 = $ httpKernel ->handle ($ subRequest , HttpKernelInterface::SUB_REQUEST );
557+ $ response1 = $ httpKernel ->handle ($ subRequest , HttpKernelInterface::SUB_REQUEST );
558+
559+ return new Response ($ response0 ->getContent () . $ response1 ->getContent ());
560+ }
561+
562+ public function renderTwig (Environment $ twig , Request $ request )
563+ {
564+ return new Response ($ twig ->render ($ request ->attributes ->get ('template ' )));
565+ }
527566}
528567
529568if (AbstractWebpackEncoreIntegrationTestKernel::VERSION_ID >= 50100 ) {
@@ -532,18 +571,23 @@ class WebpackEncoreIntegrationTestKernel extends AbstractWebpackEncoreIntegratio
532571 protected function configureRouting (RoutingConfigurator $ routes ): void
533572 {
534573 $ routes ->add ('/foo ' , 'kernel::renderFoo ' );
574+ $ routes ->add ('/render ' , 'kernel::renderTwig ' );
575+ $ routes ->add ('/render-sub-requests ' , 'kernel::renderSubRequests ' );
535576 }
536577 }
537578} else {
538579 class WebpackEncoreIntegrationTestKernel extends AbstractWebpackEncoreIntegrationTestKernel
539580 {
540581 protected function configureRoutes (RouteCollectionBuilder $ routes )
541582 {
542- $ routes ->add ('/foo ' , 'kernel: ' .(parent ::VERSION_ID >= 40100 ? ': ' : '' ).'renderFoo ' );
583+ $ routes ->add ('/foo ' , 'kernel:::renderFoo ' );
584+ $ routes ->add ('/render ' , 'kernel::renderTwig ' );
585+ $ routes ->add ('/render-sub-requests ' , 'kernel::renderSubRequests ' );
543586 }
544587 }
545588}
546589
590+
547591class WebpackEncoreCacheWarmerTester
548592{
549593 private $ entrypointCacheWarmer ;
0 commit comments