|
33 | 33 | use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
|
34 | 34 | use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
|
35 | 35 | use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
|
| 36 | +use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter; |
36 | 37 | use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
|
37 | 38 | use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
|
38 | 39 | use Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer;
|
@@ -140,6 +141,29 @@ public function testDenormalizeWithNestedAttributesWithoutMetadata()
|
140 | 141 | $this->assertNull($test->notfoo);
|
141 | 142 | }
|
142 | 143 |
|
| 144 | + public function testDenormalizeWithSnakeCaseNestedAttributes() |
| 145 | + { |
| 146 | + $factory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader())); |
| 147 | + $normalizer = new ObjectNormalizer($factory, new CamelCaseToSnakeCaseNameConverter()); |
| 148 | + $data = [ |
| 149 | + 'one' => [ |
| 150 | + 'two_three' => 'fooBar', |
| 151 | + ], |
| 152 | + ]; |
| 153 | + $test = $normalizer->denormalize($data, SnakeCaseNestedDummy::class, 'any'); |
| 154 | + $this->assertSame('fooBar', $test->fooBar); |
| 155 | + } |
| 156 | + |
| 157 | + public function testNormalizeWithSnakeCaseNestedAttributes() |
| 158 | + { |
| 159 | + $factory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader())); |
| 160 | + $normalizer = new ObjectNormalizer($factory, new CamelCaseToSnakeCaseNameConverter()); |
| 161 | + $dummy = new SnakeCaseNestedDummy(); |
| 162 | + $dummy->fooBar = 'fooBar'; |
| 163 | + $test = $normalizer->normalize($dummy, 'any'); |
| 164 | + $this->assertSame(['one' => ['two_three' => 'fooBar']], $test); |
| 165 | + } |
| 166 | + |
143 | 167 | public function testDenormalizeWithNestedAttributes()
|
144 | 168 | {
|
145 | 169 | $normalizer = new AbstractObjectNormalizerWithMetadata();
|
@@ -861,6 +885,14 @@ public function __construct(
|
861 | 885 | }
|
862 | 886 | }
|
863 | 887 |
|
| 888 | +class SnakeCaseNestedDummy |
| 889 | +{ |
| 890 | + /** |
| 891 | + * @SerializedPath("[one][two_three]") |
| 892 | + */ |
| 893 | + public $fooBar; |
| 894 | +} |
| 895 | + |
864 | 896 | /**
|
865 | 897 | * @DiscriminatorMap(typeProperty="type", mapping={
|
866 | 898 | * "first" = FirstNestedDummyWithConstructorAndDiscriminator::class,
|
|
0 commit comments