@@ -320,6 +320,68 @@ public function test_server_response_with_defer_and_deep_merge_props(): void
320320 $ this ->assertSame ('<div id="app" data-page="{"component":"User\/Edit","props":{"user":{"name":"Jonathan"},"bar":"bar value"},"url":"\/user\/123","version":"123","clearHistory":false,"encryptHistory":false,"deepMergeProps":["foo","bar"],"deferredProps":{"default":["foo"]}}"></div> ' , $ view ->render ());
321321 }
322322
323+ public function test_exclude_merge_props_from_partial_only_response (): void
324+ {
325+ $ request = Request::create ('/user/123 ' , 'GET ' );
326+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
327+ $ request ->headers ->add (['X-Inertia-Partial-Component ' => 'User/Edit ' ]);
328+ $ request ->headers ->add (['X-Inertia-Partial-Data ' => 'user ' ]);
329+
330+ $ user = ['name ' => 'Jonathan ' ];
331+ $ response = new Response (
332+ 'User/Edit ' ,
333+ [
334+ 'user ' => $ user ,
335+ 'foo ' => new MergeProp ('foo value ' ),
336+ 'bar ' => new MergeProp ('bar value ' ),
337+ ],
338+ 'app ' ,
339+ '123 '
340+ );
341+ $ response = $ response ->toResponse ($ request );
342+ $ page = $ response ->getData ();
343+
344+ $ props = get_object_vars ($ page ->props );
345+
346+ $ this ->assertInstanceOf (JsonResponse::class, $ response );
347+
348+ $ this ->assertSame ('Jonathan ' , $ props ['user ' ]->name );
349+ $ this ->assertArrayNotHasKey ('foo ' , $ props );
350+ $ this ->assertArrayNotHasKey ('bar ' , $ props );
351+ $ this ->assertFalse (isset ($ page ->mergeProps ));
352+ }
353+
354+ public function test_exclude_merge_props_from_partial_except_response (): void
355+ {
356+ $ request = Request::create ('/user/123 ' , 'GET ' );
357+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
358+ $ request ->headers ->add (['X-Inertia-Partial-Component ' => 'User/Edit ' ]);
359+ $ request ->headers ->add (['X-Inertia-Partial-Except ' => 'foo ' ]);
360+
361+ $ user = ['name ' => 'Jonathan ' ];
362+ $ response = new Response (
363+ 'User/Edit ' ,
364+ [
365+ 'user ' => $ user ,
366+ 'foo ' => new MergeProp ('foo value ' ),
367+ 'bar ' => new MergeProp ('bar value ' ),
368+ ],
369+ 'app ' ,
370+ '123 '
371+ );
372+ $ response = $ response ->toResponse ($ request );
373+ $ page = $ response ->getData ();
374+
375+ $ props = get_object_vars ($ page ->props );
376+
377+ $ this ->assertInstanceOf (JsonResponse::class, $ response );
378+
379+ $ this ->assertSame ('Jonathan ' , $ props ['user ' ]->name );
380+ $ this ->assertArrayNotHasKey ('foo ' , $ props );
381+ $ this ->assertArrayHasKey ('bar ' , $ props );
382+ $ this ->assertSame (['bar ' ], $ page ->mergeProps );
383+ }
384+
323385 public function test_xhr_response (): void
324386 {
325387 $ request = Request::create ('/user/123 ' , 'GET ' );
0 commit comments