@@ -201,6 +201,45 @@ public function test_server_response_with_deep_merge_props(): void
201201 $ this ->assertSame ('<div id="app" data-page="{"component":"User\/Edit","props":{"user":{"name":"Jonathan"},"foo":"foo value","bar":"bar value"},"url":"\/user\/123","version":"123","clearHistory":false,"encryptHistory":false,"deepMergeProps":["foo","bar"]}"></div> ' , $ view ->render ());
202202 }
203203
204+ public function test_server_response_with_merge_strategies (): void
205+ {
206+ $ request = Request::create ('/user/123 ' , 'GET ' );
207+
208+ $ user = ['name ' => 'Jonathan ' ];
209+ $ response = new Response (
210+ 'User/Edit ' ,
211+ [
212+ 'user ' => $ user ,
213+ 'foo ' => (new MergeProp ('foo value ' , ['foo-key ' ]))->deepMerge (),
214+ 'bar ' => (new MergeProp ('bar value ' , ['bar-key ' ]))->deepMerge (),
215+ ],
216+ 'app ' ,
217+ '123 '
218+ );
219+ $ response = $ response ->toResponse ($ request );
220+ $ view = $ response ->getOriginalContent ();
221+ $ page = $ view ->getData ()['page ' ];
222+
223+ $ this ->assertInstanceOf (BaseResponse::class, $ response );
224+ $ this ->assertInstanceOf (View::class, $ view );
225+
226+ $ this ->assertSame ('User/Edit ' , $ page ['component ' ]);
227+ $ this ->assertSame ('Jonathan ' , $ page ['props ' ]['user ' ]['name ' ]);
228+ $ this ->assertSame ('/user/123 ' , $ page ['url ' ]);
229+ $ this ->assertSame ('123 ' , $ page ['version ' ]);
230+ $ this ->assertSame ([
231+ 'foo ' ,
232+ 'bar ' ,
233+ ], $ page ['deepMergeProps ' ]);
234+ $ this ->assertSame ([
235+ 'foo.foo-key ' ,
236+ 'bar.bar-key ' ,
237+ ], $ page ['mergeStrategies ' ]);
238+ $ this ->assertFalse ($ page ['clearHistory ' ]);
239+ $ this ->assertFalse ($ page ['encryptHistory ' ]);
240+ $ this ->assertSame ('<div id="app" data-page="{"component":"User\/Edit","props":{"user":{"name":"Jonathan"},"foo":"foo value","bar":"bar value"},"url":"\/user\/123","version":"123","clearHistory":false,"encryptHistory":false,"deepMergeProps":["foo","bar"],"mergeStrategies":["foo.foo-key","bar.bar-key"]}"></div> ' , $ view ->render ());
241+ }
242+
204243 public function test_server_response_with_defer_and_merge_props (): void
205244 {
206245 $ request = Request::create ('/user/123 ' , 'GET ' );
0 commit comments