@@ -201,6 +201,45 @@ public function test_server_response_with_deep_merge_props(): void
201
201
$ 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 ());
202
202
}
203
203
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
+
204
243
public function test_server_response_with_defer_and_merge_props (): void
205
244
{
206
245
$ request = Request::create ('/user/123 ' , 'GET ' );
0 commit comments