Skip to content

Commit 8261370

Browse files
Merge branch '6.1' into 6.2
* 6.1: [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 f4059c2 + 4155db8 commit 8261370

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
@@ -77,7 +77,8 @@
7777

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

8384
->set('serializer.normalizer.mime_message', MimeMessageNormalizer::class)
@@ -123,7 +124,6 @@
123124
service('property_info')->ignoreOnInvalid(),
124125
service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(),
125126
null,
126-
[],
127127
])
128128
->tag('serializer.normalizer', ['priority' => -1000])
129129

@@ -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')

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)