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