Skip to content

Commit 763f099

Browse files
Merge branch '5.4' into 6.0
* 5.4: [Serializer] forward the context from the JsonEncoder to JsonEncode and JsonDecode [Notifier] Use local copy of stella-maris/clock when testing [FrameworkBundle] Fix passing `serializer.default_context` option to normalizers
2 parents acc970e + 394866c commit 763f099

File tree

3 files changed

+82
-3
lines changed

3 files changed

+82
-3
lines changed

Resources/config/serializer.php

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

7777
// Normalizer
7878
->set('serializer.normalizer.constraint_violation_list', ConstraintViolationListNormalizer::class)
79-
->args([[], service('serializer.name_converter.metadata_aware')])
79+
->args([1 => service('serializer.name_converter.metadata_aware')])
80+
->autowire(true)
8081
->tag('serializer.normalizer', ['priority' => -915])
8182

8283
->set('serializer.normalizer.mime_message', MimeMessageNormalizer::class)
@@ -122,7 +123,6 @@
122123
service('property_info')->ignoreOnInvalid(),
123124
service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(),
124125
null,
125-
[],
126126
])
127127
->tag('serializer.normalizer', ['priority' => -1000])
128128

@@ -135,7 +135,6 @@
135135
service('property_info')->ignoreOnInvalid(),
136136
service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(),
137137
null,
138-
[],
139138
])
140139

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

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

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)