@@ -240,6 +240,54 @@ public function test_resource_response(): void
240240 $ this ->assertSame ('123 ' , $ page ->version );
241241 }
242242
243+ public function test_lazy_callable_resource_response (): void
244+ {
245+ $ request = Request::create ('/users ' , 'GET ' );
246+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
247+
248+ $ response = new Response ('User/Index ' , [
249+ 'users ' => fn () => [['name ' => 'Jonathan ' ]],
250+ 'organizations ' => fn () => [['name ' => 'Inertia ' ]],
251+ ], 'app ' , '123 ' );
252+ $ response = $ response ->toResponse ($ request );
253+ $ page = $ response ->getData ();
254+
255+ $ this ->assertInstanceOf (JsonResponse::class, $ response );
256+ $ this ->assertSame ('User/Index ' , $ page ->component );
257+ $ this ->assertSame ('/users ' , $ page ->url );
258+ $ this ->assertSame ('123 ' , $ page ->version );
259+ tap ($ page ->props ->users , function ($ users ) {
260+ $ this ->assertSame (json_encode ([['name ' => 'Jonathan ' ]]), json_encode ($ users ));
261+ });
262+ tap ($ page ->props ->organizations , function ($ organizations ) {
263+ $ this ->assertSame (json_encode ([['name ' => 'Inertia ' ]]), json_encode ($ organizations ));
264+ });
265+ }
266+
267+ public function test_lazy_callable_resource_partial_response (): void
268+ {
269+ $ request = Request::create ('/users ' , 'GET ' );
270+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
271+ $ request ->headers ->add (['X-Inertia-Partial-Data ' => 'users ' ]);
272+ $ request ->headers ->add (['X-Inertia-Partial-Component ' => 'User/Index ' ]);
273+
274+ $ response = new Response ('User/Index ' , [
275+ 'users ' => fn () => [['name ' => 'Jonathan ' ]],
276+ 'organizations ' => fn () => [['name ' => 'Inertia ' ]],
277+ ], 'app ' , '123 ' );
278+ $ response = $ response ->toResponse ($ request );
279+ $ page = $ response ->getData ();
280+
281+ $ this ->assertInstanceOf (JsonResponse::class, $ response );
282+ $ this ->assertSame ('User/Index ' , $ page ->component );
283+ $ this ->assertSame ('/users ' , $ page ->url );
284+ $ this ->assertSame ('123 ' , $ page ->version );
285+ $ this ->assertFalse (property_exists ($ page ->props , 'organizations ' ));
286+ tap ($ page ->props ->users , function ($ users ) {
287+ $ this ->assertSame (json_encode ([['name ' => 'Jonathan ' ]]), json_encode ($ users ));
288+ });
289+ }
290+
243291 public function test_lazy_resource_response (): void
244292 {
245293 $ request = Request::create ('/users ' , 'GET ' , ['page ' => 1 ]);
0 commit comments