Skip to content

Commit 6ac8f52

Browse files
committed
[FrameworkBundle] Fix passing serializer.default_context option to normalizers and encoders
1 parent fd81357 commit 6ac8f52

File tree

3 files changed

+82
-3
lines changed

3 files changed

+82
-3
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@
7878

7979
// Normalizer
8080
->set('serializer.normalizer.constraint_violation_list', ConstraintViolationListNormalizer::class)
81-
->args([[], service('serializer.name_converter.metadata_aware')])
81+
->args([1 => service('serializer.name_converter.metadata_aware')])
82+
->autowire(true)
8283
->tag('serializer.normalizer', ['priority' => -915])
8384

8485
->set('serializer.normalizer.mime_message', MimeMessageNormalizer::class)
@@ -124,7 +125,6 @@
124125
service('property_info')->ignoreOnInvalid(),
125126
service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(),
126127
null,
127-
[],
128128
])
129129
->tag('serializer.normalizer', ['priority' => -1000])
130130

@@ -137,7 +137,6 @@
137137
service('property_info')->ignoreOnInvalid(),
138138
service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(),
139139
null,
140-
[],
141140
])
142141

143142
->alias(PropertyNormalizer::class, 'serializer.normalizer.property')

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SerializerTest.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,41 @@ public function testDeserializeArrayOfObject()
3232

3333
$this->assertEquals($expected, $result);
3434
}
35+
36+
/**
37+
* @dataProvider provideNormalizersAndEncodersWithDefaultContextOption
38+
*/
39+
public function testNormalizersAndEncodersUseDefaultContextConfigOption(string $normalizerId)
40+
{
41+
static::bootKernel(['test_case' => 'Serializer']);
42+
43+
$normalizer = static::getContainer()->get($normalizerId);
44+
45+
$reflectionObject = new \ReflectionObject($normalizer);
46+
$property = $reflectionObject->getProperty('defaultContext');
47+
$property->setAccessible(true);
48+
49+
$defaultContext = $property->getValue($normalizer);
50+
51+
self::assertArrayHasKey('fake_context_option', $defaultContext);
52+
self::assertEquals('foo', $defaultContext['fake_context_option']);
53+
}
54+
55+
public function provideNormalizersAndEncodersWithDefaultContextOption(): array
56+
{
57+
return [
58+
['serializer.normalizer.constraint_violation_list.alias'],
59+
['serializer.normalizer.dateinterval.alias'],
60+
['serializer.normalizer.datetime.alias'],
61+
['serializer.normalizer.json_serializable.alias'],
62+
['serializer.normalizer.problem.alias'],
63+
['serializer.normalizer.uid.alias'],
64+
['serializer.normalizer.object.alias'],
65+
['serializer.encoder.xml.alias'],
66+
['serializer.encoder.yaml.alias'],
67+
['serializer.encoder.csv.alias'],
68+
];
69+
}
3570
}
3671

3772
class Foo

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Serializer/config.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,54 @@ framework:
66
enabled: true
77
default_context:
88
enable_max_depth: true
9+
fake_context_option: foo
910
property_info: { enabled: true }
1011

1112
services:
1213
serializer.alias:
1314
alias: serializer
1415
public: true
16+
17+
serializer.normalizer.constraint_violation_list.alias:
18+
alias: serializer.normalizer.constraint_violation_list
19+
public: true
20+
21+
serializer.normalizer.dateinterval.alias:
22+
alias: serializer.normalizer.dateinterval
23+
public: true
24+
25+
serializer.normalizer.datetime.alias:
26+
alias: serializer.normalizer.datetime
27+
public: true
28+
29+
serializer.normalizer.json_serializable.alias:
30+
alias: serializer.normalizer.json_serializable
31+
public: true
32+
33+
serializer.normalizer.problem.alias:
34+
alias: serializer.normalizer.problem
35+
public: true
36+
37+
serializer.normalizer.uid.alias:
38+
alias: serializer.normalizer.uid
39+
public: true
40+
41+
serializer.normalizer.property.alias:
42+
alias: serializer.normalizer.property
43+
public: true
44+
45+
serializer.normalizer.object.alias:
46+
alias: serializer.normalizer.object
47+
public: true
48+
49+
serializer.encoder.xml.alias:
50+
alias: serializer.encoder.xml
51+
public: true
52+
53+
serializer.encoder.yaml.alias:
54+
alias: serializer.encoder.yaml
55+
public: true
56+
57+
serializer.encoder.csv.alias:
58+
alias: serializer.encoder.csv
59+
public: true

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy