1212namespace Symfony \UX \LiveComponent \Tests \Functional \EventListener ;
1313
1414use Symfony \Bundle \FrameworkBundle \Test \KernelTestCase ;
15+ use Symfony \Component \DomCrawler \Crawler ;
1516use Symfony \UX \LiveComponent \Tests \LiveComponentTestHelper ;
1617use Zenstruck \Browser \Test \HasBrowser ;
1718
@@ -160,6 +161,7 @@ public function testAbsoluteUrl(): void
160161 $ div = $ this ->browser ()
161162 ->visit ('/render-template/render_with_absolute_url ' )
162163 ->assertSuccessful ()
164+ ->assertContains ('Count: 0 ' )
163165 ->crawler ()
164166 ->filter ('div ' )
165167 ;
@@ -169,9 +171,46 @@ public function testAbsoluteUrl(): void
169171 $ this ->assertSame ('live ' , $ div ->attr ('data-controller ' ));
170172 $ this ->assertSame ('http://localhost/_components/with_absolute_url ' , $ div ->attr ('data-live-url-value ' ));
171173 $ this ->assertNotNull ($ div ->attr ('data-live-csrf-value ' ));
172- $ this ->assertCount (2 , $ props );
174+ $ this ->assertCount (3 , $ props );
173175 $ this ->assertArrayHasKey ('@checksum ' , $ props );
174176 $ this ->assertArrayHasKey ('@attributes ' , $ props );
175177 $ this ->assertArrayHasKey ('data-live-id ' , $ props ['@attributes ' ]);
178+ $ this ->assertArrayHasKey ('count ' , $ props );
179+ $ this ->assertSame ($ props ['count ' ], 0 );
180+ }
181+
182+ public function testAbsoluteUrlWithLiveQueryProp ()
183+ {
184+ $ token = null ;
185+ $ props = [];
186+ $ div = $ this ->browser ()
187+ ->get ('/render-template/render_with_absolute_url?count=1 ' )
188+ ->assertSuccessful ()
189+ ->assertContains ('Count: 1 ' )
190+ ->use (function (Crawler $ crawler ) use (&$ token , &$ props ) {
191+ $ div = $ crawler ->filter ('div ' )->first ();
192+ $ token = $ div ->attr ('data-live-csrf-value ' );
193+ $ props = json_decode ($ div ->attr ('data-live-props-value ' ), true );
194+ })
195+ ->post ('http://localhost/_components/with_absolute_url/increase ' , [
196+ 'headers ' => ['X-CSRF-TOKEN ' => $ token ],
197+ 'body ' => ['data ' => json_encode (['props ' => $ props ])],
198+ ])
199+ ->assertContains ('Count: 2 ' )
200+ ->crawler ()
201+ ->filter ('div ' )
202+ ;
203+
204+ $ props = json_decode ($ div ->attr ('data-live-props-value ' ), true );
205+
206+ $ this ->assertSame ('live ' , $ div ->attr ('data-controller ' ));
207+ $ this ->assertSame ('http://localhost/_components/with_absolute_url ' , $ div ->attr ('data-live-url-value ' ));
208+ $ this ->assertNotNull ($ div ->attr ('data-live-csrf-value ' ));
209+ $ this ->assertCount (3 , $ props );
210+ $ this ->assertArrayHasKey ('@checksum ' , $ props );
211+ $ this ->assertArrayHasKey ('@attributes ' , $ props );
212+ $ this ->assertArrayHasKey ('data-live-id ' , $ props ['@attributes ' ]);
213+ $ this ->assertArrayHasKey ('count ' , $ props );
214+ $ this ->assertSame ($ props ['count ' ], 2 );
176215 }
177216}
0 commit comments