@@ -240,6 +240,54 @@ public function test_resource_response(): void
240
240
$ this ->assertSame ('123 ' , $ page ->version );
241
241
}
242
242
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
+
243
291
public function test_lazy_resource_response (): void
244
292
{
245
293
$ request = Request::create ('/users ' , 'GET ' , ['page ' => 1 ]);
0 commit comments