30
30
use Symfony \Component \Serializer \Tests \Fixtures \CircularReferenceDummy ;
31
31
use Symfony \Component \Serializer \Tests \Fixtures \GroupDummy ;
32
32
use Symfony \Component \Serializer \Tests \Fixtures \SiblingHolder ;
33
+ use Symfony \Component \Serializer \Tests \Normalizer \Features \CallbacksObject ;
34
+ use Symfony \Component \Serializer \Tests \Normalizer \Features \CallbacksTestTrait ;
33
35
use Symfony \Component \Serializer \Tests \Normalizer \Features \ConstructorArgumentsTestTrait ;
34
36
use Symfony \Component \Serializer \Tests \Normalizer \Features \GroupsTestTrait ;
35
37
use Symfony \Component \Serializer \Tests \Normalizer \Features \MaxDepthTestTrait ;
38
40
39
41
class GetSetMethodNormalizerTest extends TestCase
40
42
{
43
+ use CallbacksTestTrait;
44
+ use ConstructorArgumentsTestTrait;
41
45
use GroupsTestTrait;
42
- use ObjectToPopulateTestTrait;
43
46
use MaxDepthTestTrait;
44
- use ConstructorArgumentsTestTrait ;
47
+ use ObjectToPopulateTestTrait ;
45
48
use TypeEnforcementTestTrait;
46
49
47
50
/**
@@ -218,62 +221,48 @@ public function testConstructorWArgWithPrivateMutator()
218
221
$ this ->assertEquals ('bar ' , $ obj ->getFoo ());
219
222
}
220
223
221
- protected function getNormalizerForGroups (): GetSetMethodNormalizer
224
+ protected function getNormalizerForCallbacks (): GetSetMethodNormalizer
222
225
{
223
226
$ classMetadataFactory = new ClassMetadataFactory (new AnnotationLoader (new AnnotationReader ()));
224
227
225
- return new GetSetMethodNormalizer ($ classMetadataFactory );
228
+ return new GetSetMethodNormalizer ($ classMetadataFactory, new MetadataAwareNameConverter ( $ classMetadataFactory ) );
226
229
}
227
230
228
- protected function getDenormalizerForGroups (): GetSetMethodNormalizer
231
+ /**
232
+ * @dataProvider provideCallbacks
233
+ */
234
+ public function testLegacyCallbacks ($ callbacks , $ value , $ result )
229
235
{
230
- $ classMetadataFactory = new ClassMetadataFactory ( new AnnotationLoader ( new AnnotationReader ()) );
236
+ $ this -> normalizer -> setCallbacks ( $ callbacks );
231
237
232
- return new GetSetMethodNormalizer ($ classMetadataFactory );
238
+ $ obj = new CallbacksObject ($ value );
239
+ $ this ->assertEquals (
240
+ $ result ,
241
+ $ this ->normalizer ->normalize ($ obj , 'any ' )
242
+ );
233
243
}
234
244
235
- protected function getDenormalizerForObjectToPopulate (): DenormalizerInterface
245
+ protected function getDenormalizerForConstructArguments (): GetSetMethodNormalizer
236
246
{
237
247
$ classMetadataFactory = new ClassMetadataFactory (new AnnotationLoader (new AnnotationReader ()));
238
- $ normalizer = new GetSetMethodNormalizer ($ classMetadataFactory , null , new PhpDocExtractor ( ));
239
- new Serializer ([$ normalizer ]);
248
+ $ denormalizer = new GetSetMethodNormalizer ($ classMetadataFactory , new MetadataAwareNameConverter ( $ classMetadataFactory ));
249
+ new Serializer ([$ denormalizer ]);
240
250
241
- return $ normalizer ;
251
+ return $ denormalizer ;
242
252
}
243
253
244
- protected function getNormalizerForMaxDepth (): NormalizerInterface
254
+ protected function getNormalizerForGroups (): GetSetMethodNormalizer
245
255
{
246
256
$ classMetadataFactory = new ClassMetadataFactory (new AnnotationLoader (new AnnotationReader ()));
247
- $ normalizer = new GetSetMethodNormalizer ($ classMetadataFactory );
248
- $ serializer = new Serializer ([$ normalizer ]);
249
- $ normalizer ->setSerializer ($ serializer );
250
257
251
- return $ normalizer ;
258
+ return new GetSetMethodNormalizer ( $ classMetadataFactory ) ;
252
259
}
253
260
254
- protected function getDenormalizerForConstructArguments (): DenormalizerInterface
261
+ protected function getDenormalizerForGroups (): GetSetMethodNormalizer
255
262
{
256
263
$ classMetadataFactory = new ClassMetadataFactory (new AnnotationLoader (new AnnotationReader ()));
257
- $ denormalizer = new GetSetMethodNormalizer ($ classMetadataFactory , new MetadataAwareNameConverter ($ classMetadataFactory ));
258
- $ serializer = new Serializer ([$ denormalizer ]);
259
- $ denormalizer ->setSerializer ($ serializer );
260
264
261
- return $ denormalizer ;
262
- }
263
-
264
- protected function getDenormalizerForTypeEnforcement (): DenormalizerInterface
265
- {
266
- $ extractor = new PropertyInfoExtractor ([], [new PhpDocExtractor (), new ReflectionExtractor ()]);
267
- $ normalizer = new GetSetMethodNormalizer (null , null , $ extractor );
268
- $ serializer = new Serializer ([new ArrayDenormalizer (), $ normalizer ]);
269
- $ normalizer ->setSerializer ($ serializer );
270
-
271
- return $ normalizer ;
272
- }
273
-
274
- public function testRejectInvalidKey ()
275
- {
276
- $ this ->markTestSkipped ('This test makes no sense with the GetSetMethodNormalizer ' );
265
+ return new GetSetMethodNormalizer ($ classMetadataFactory );
277
266
}
278
267
279
268
public function testGroupsNormalizeWithNameConverter ()
@@ -318,59 +307,44 @@ public function testGroupsDenormalizeWithNameConverter()
318
307
);
319
308
}
320
309
321
- /**
322
- * @dataProvider provideCallbacks
323
- */
324
- public function testCallbacks ($ callbacks , $ value , $ result , $ message )
310
+ protected function getNormalizerForMaxDepth (): NormalizerInterface
325
311
{
326
- $ this ->doTestCallbacks ($ callbacks , $ value , $ result , $ message );
327
- }
312
+ $ classMetadataFactory = new ClassMetadataFactory (new AnnotationLoader (new AnnotationReader ()));
313
+ $ normalizer = new GetSetMethodNormalizer ($ classMetadataFactory );
314
+ $ serializer = new Serializer ([$ normalizer ]);
315
+ $ normalizer ->setSerializer ($ serializer );
328
316
329
- /**
330
- * @dataProvider provideCallbacks
331
- */
332
- public function testLegacyCallbacks ($ callbacks , $ value , $ result , $ message )
333
- {
334
- $ this ->doTestCallbacks ($ callbacks , $ value , $ result , $ message , true );
317
+ return $ normalizer ;
335
318
}
336
319
337
- private function doTestCallbacks ( $ callbacks , $ value , $ result , $ message , bool $ legacy = false )
320
+ protected function getDenormalizerForObjectToPopulate (): DenormalizerInterface
338
321
{
339
- $ legacy ? $ this ->normalizer ->setCallbacks ($ callbacks ) : $ this ->createNormalizer ([GetSetMethodNormalizer::CALLBACKS => $ callbacks ]);
322
+ $ classMetadataFactory = new ClassMetadataFactory (new AnnotationLoader (new AnnotationReader ()));
323
+ $ normalizer = new GetSetMethodNormalizer ($ classMetadataFactory , null , new PhpDocExtractor ());
324
+ new Serializer ([$ normalizer ]);
340
325
341
- $ obj = new GetConstructorDummy ('' , $ value , true );
342
- $ this ->assertEquals (
343
- $ result ,
344
- $ this ->normalizer ->normalize ($ obj , 'any ' ),
345
- $ message
346
- );
326
+ return $ normalizer ;
347
327
}
348
328
349
- /**
350
- * @expectedException \InvalidArgumentException
351
- */
352
- public function testUncallableCallbacks ()
329
+ protected function getDenormalizerForTypeEnforcement (): DenormalizerInterface
353
330
{
354
- $ this ->doTestUncallableCallbacks ();
331
+ $ extractor = new PropertyInfoExtractor ([], [new PhpDocExtractor (), new ReflectionExtractor ()]);
332
+ $ normalizer = new GetSetMethodNormalizer (null , null , $ extractor );
333
+ $ serializer = new Serializer ([new ArrayDenormalizer (), $ normalizer ]);
334
+ $ normalizer ->setSerializer ($ serializer );
335
+
336
+ return $ normalizer ;
355
337
}
356
338
357
- /**
358
- * @expectedException \InvalidArgumentException
359
- */
360
- public function testLegacyUncallableCallbacks ()
339
+ public function testRejectInvalidKey ()
361
340
{
362
- $ this ->doTestUncallableCallbacks ( true );
341
+ $ this ->markTestSkipped ( ' This test makes no sense with the GetSetMethodNormalizer ' );
363
342
}
364
343
365
- private function doTestUncallableCallbacks (bool $ legacy = false )
366
- {
367
- $ callbacks = ['bar ' => null ];
368
- $ legacy ? $ this ->normalizer ->setCallbacks ($ callbacks ) : $ this ->createNormalizer ([GetSetMethodNormalizer::CALLBACKS => $ callbacks ]);
369
344
370
- $ obj = new GetConstructorDummy ('baz ' , 'quux ' , true );
371
345
372
- $ this -> normalizer -> normalize ( $ obj , ' any ' );
373
- }
346
+
347
+
374
348
375
349
public function testIgnoredAttributes ()
376
350
{
@@ -398,66 +372,6 @@ private function doTestIgnoredAttributes(bool $legacy = false)
398
372
);
399
373
}
400
374
401
- public function provideCallbacks ()
402
- {
403
- return [
404
- [
405
- [
406
- 'bar ' => function ($ bar ) {
407
- return 'baz ' ;
408
- },
409
- ],
410
- 'baz ' ,
411
- ['foo ' => '' , 'bar ' => 'baz ' , 'baz ' => true ],
412
- 'Change a string ' ,
413
- ],
414
- [
415
- [
416
- 'bar ' => function ($ bar ) {
417
- },
418
- ],
419
- 'baz ' ,
420
- ['foo ' => '' , 'bar ' => null , 'baz ' => true ],
421
- 'Null an item ' ,
422
- ],
423
- [
424
- [
425
- 'bar ' => function ($ bar ) {
426
- return $ bar ->format ('d-m-Y H:i:s ' );
427
- },
428
- ],
429
- new \DateTime ('2011-09-10 06:30:00 ' ),
430
- ['foo ' => '' , 'bar ' => '10-09-2011 06:30:00 ' , 'baz ' => true ],
431
- 'Format a date ' ,
432
- ],
433
- [
434
- [
435
- 'bar ' => function ($ bars ) {
436
- $ foos = '' ;
437
- foreach ($ bars as $ bar ) {
438
- $ foos .= $ bar ->getFoo ();
439
- }
440
-
441
- return $ foos ;
442
- },
443
- ],
444
- [new GetConstructorDummy ('baz ' , '' , false ), new GetConstructorDummy ('quux ' , '' , false )],
445
- ['foo ' => '' , 'bar ' => 'bazquux ' , 'baz ' => true ],
446
- 'Collect a property ' ,
447
- ],
448
- [
449
- [
450
- 'bar ' => function ($ bars ) {
451
- return \count ($ bars );
452
- },
453
- ],
454
- [new GetConstructorDummy ('baz ' , '' , false ), new GetConstructorDummy ('quux ' , '' , false )],
455
- ['foo ' => '' , 'bar ' => 2 , 'baz ' => true ],
456
- 'Count a property ' ,
457
- ],
458
- ];
459
- }
460
-
461
375
/**
462
376
* @expectedException \Symfony\Component\Serializer\Exception\LogicException
463
377
* @expectedExceptionMessage Cannot normalize attribute "object" because the injected serializer is not a normalizer
0 commit comments