Skip to content

Commit be33f4a

Browse files
Merge branch '6.0' into 6.1
* 6.0: [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 84ca0b1 + 763f099 commit be33f4a

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
@@ -7,9 +7,54 @@ framework:
77
enabled: true
88
default_context:
99
enable_max_depth: true
10+
fake_context_option: foo
1011
property_info: { enabled: true }
1112

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

0 commit comments

Comments
 (0)