Skip to content

Commit 95b88e7

Browse files
Jérôme Parmentierogizanagi
authored andcommitted
[Serializer][FrameworkBundle] Add a DateInterval normalizer
1 parent 6dcf70b commit 95b88e7

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
use Symfony\Component\Serializer\Encoder\YamlEncoder;
6868
use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory;
6969
use Symfony\Component\Serializer\Normalizer\DataUriNormalizer;
70+
use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
7071
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
7172
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
7273
use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer;
@@ -1522,6 +1523,13 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
15221523
$definition->addTag('serializer.normalizer', array('priority' => -920));
15231524
}
15241525

1526+
if (class_exists(DateIntervalNormalizer::class)) {
1527+
// Run before serializer.normalizer.object
1528+
$definition = $container->register('serializer.normalizer.dateinterval', DateIntervalNormalizer::class);
1529+
$definition->setPublic(false);
1530+
$definition->addTag('serializer.normalizer', array('priority' => -915));
1531+
}
1532+
15251533
if (class_exists('Symfony\Component\Serializer\Normalizer\DateTimeNormalizer')) {
15261534
// Run before serializer.normalizer.object
15271535
$definition = $container->register('serializer.normalizer.datetime', DateTimeNormalizer::class);

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
3535
use Symfony\Component\PropertyAccess\PropertyAccessor;
3636
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
37+
use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
3738
use Symfony\Component\Serializer\Serializer;
3839
use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory;
3940
use Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader;
@@ -776,6 +777,21 @@ public function testDataUriNormalizerRegistered()
776777
$this->assertEquals(-920, $tag[0]['priority']);
777778
}
778779

780+
public function testDateIntervalNormalizerRegistered()
781+
{
782+
if (!class_exists(DateIntervalNormalizer::class)) {
783+
$this->markTestSkipped('The DateIntervalNormalizer has been introduced in the Serializer Component version 3.4.');
784+
}
785+
786+
$container = $this->createContainerFromFile('full');
787+
788+
$definition = $container->getDefinition('serializer.normalizer.dateinterval');
789+
$tag = $definition->getTag('serializer.normalizer');
790+
791+
$this->assertEquals(DateIntervalNormalizer::class, $definition->getClass());
792+
$this->assertEquals(-915, $tag[0]['priority']);
793+
}
794+
779795
public function testDateTimeNormalizerRegistered()
780796
{
781797
if (!class_exists('Symfony\Component\Serializer\Normalizer\DateTimeNormalizer')) {

0 commit comments

Comments
 (0)