@@ -381,6 +381,62 @@ public function testMultipleNamedSerializerTagsAreResolvedCorrectly()
381
381
$ this ->assertCount (2 , $ encoderDefinition ->getTag ('serializer.encoder.api2 ' ));
382
382
}
383
383
384
+ /**
385
+ * @dataProvider provideEmptyTagsData
386
+ */
387
+ public function testEmptyTagsAreIgnoredWhenNonEmptyArePresent (
388
+ array $ tagAttributesList ,
389
+ array $ expectedDefaultTags ,
390
+ array $ expectedApiTags ,
391
+ ) {
392
+ $ container = new ContainerBuilder ();
393
+
394
+ $ container ->setParameter ('kernel.debug ' , false );
395
+ $ container ->setParameter ('.serializer.named_serializers ' , ['api ' => []]);
396
+
397
+ $ container ->register ('serializer ' )->setArguments ([null , null ]);
398
+ $ container ->register ('n0 ' )->addTag ('serializer.normalizer ' , ['serializer ' => ['default ' , 'api ' ]]);
399
+ $ container ->register ('e0 ' )->addTag ('serializer.encoder ' , ['serializer ' => ['default ' , 'api ' ]]);
400
+
401
+ $ normalizerDefinition = $ container ->register ('n1 ' )->setTags (['serializer.normalizer ' => $ tagAttributesList ]);
402
+ $ encoderDefinition = $ container ->register ('e1 ' )->setTags (['serializer.encoder ' => $ tagAttributesList ]);
403
+
404
+ $ serializerPass = new SerializerPass ();
405
+ $ serializerPass ->process ($ container );
406
+
407
+ $ this ->assertSame ($ expectedDefaultTags , $ normalizerDefinition ->getTag ('serializer.normalizer.default ' ));
408
+ $ this ->assertSame ($ expectedApiTags , $ normalizerDefinition ->getTag ('serializer.normalizer.api ' ));
409
+ $ this ->assertSame ($ expectedDefaultTags , $ encoderDefinition ->getTag ('serializer.encoder.default ' ));
410
+ $ this ->assertSame ($ expectedApiTags , $ encoderDefinition ->getTag ('serializer.encoder.api ' ));
411
+ }
412
+
413
+ public static function provideEmptyTagsData (): iterable
414
+ {
415
+ yield 'with default name ' => [
416
+ [[], ['serializer ' => 'default ' ]],
417
+ [[]],
418
+ [],
419
+ ];
420
+
421
+ yield 'with non-default name ' => [
422
+ [[], ['serializer ' => 'api ' ]],
423
+ [],
424
+ [[]],
425
+ ];
426
+
427
+ yield 'with wildcard ' => [
428
+ [[], ['serializer ' => '* ' ]],
429
+ [[]],
430
+ [[]],
431
+ ];
432
+
433
+ yield 'with priority and no name ' => [
434
+ [[], ['priority ' => 100 ]],
435
+ [['priority ' => 100 ]],
436
+ [],
437
+ ];
438
+ }
439
+
384
440
public function testThrowExceptionWhenNoNormalizersForNamedSerializers ()
385
441
{
386
442
$ container = new ContainerBuilder ();
0 commit comments