@@ -320,6 +320,64 @@ 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 ->assertFalse (isset ($ page ->mergeProps ));
350+ }
351+
352+ public function test_exclude_merge_props_from_partial_except_response (): void
353+ {
354+ $ request = Request::create ('/user/123 ' , 'GET ' );
355+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
356+ $ request ->headers ->add (['X-Inertia-Partial-Component ' => 'User/Edit ' ]);
357+ $ request ->headers ->add (['X-Inertia-Partial-Except ' => 'foo ' ]);
358+
359+ $ user = ['name ' => 'Jonathan ' ];
360+ $ response = new Response (
361+ 'User/Edit ' ,
362+ [
363+ 'user ' => $ user ,
364+ 'foo ' => new MergeProp ('foo value ' ),
365+ 'bar ' => new MergeProp ('bar value ' ),
366+ ],
367+ 'app ' ,
368+ '123 '
369+ );
370+ $ response = $ response ->toResponse ($ request );
371+ $ page = $ response ->getData ();
372+
373+ $ props = get_object_vars ($ page ->props );
374+
375+ $ this ->assertInstanceOf (JsonResponse::class, $ response );
376+
377+ $ this ->assertSame ('Jonathan ' , $ props ['user ' ]->name );
378+ $ this ->assertSame (['bar ' ], $ page ->mergeProps );
379+ }
380+
323381 public function test_xhr_response (): void
324382 {
325383 $ request = Request::create ('/user/123 ' , 'GET ' );
0 commit comments