@@ -381,6 +381,62 @@ public function testMultipleNamedSerializerTagsAreResolvedCorrectly()
381381 $ this ->assertCount (2 , $ encoderDefinition ->getTag ('serializer.encoder.api2 ' ));
382382 }
383383
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+
384440 public function testThrowExceptionWhenNoNormalizersForNamedSerializers ()
385441 {
386442 $ container = new ContainerBuilder ();
0 commit comments