From 4ad65b616d3d828caf428f8282baeb29f498b904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Thu, 3 Mar 2022 15:20:21 +0100 Subject: [PATCH] fix tests for person json normalizer and residential address stuff --- .../Normalizer/PersonJsonNormalizer.php | 6 ++- .../Normalizer/PersonJsonNormalizerTest.php | 47 ++++++++++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php index 1969fffa7..ae95c9321 100644 --- a/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php +++ b/src/Bundle/ChillPersonBundle/Serializer/Normalizer/PersonJsonNormalizer.php @@ -33,6 +33,7 @@ use Symfony\Component\Serializer\Normalizer\ObjectToPopulateTrait; use function array_key_exists; use function count; use function in_array; +use function is_string; /** * Serialize a Person entity. @@ -56,11 +57,11 @@ class PersonJsonNormalizer implements DenormalizerAwareInterface, NormalizerAwar private ResidentialAddressRepository $residentialAddressRepository; public function __construct( - ChillEntityRenderExtension $render, + ChillEntityRenderExtension $render, /* TODO: replace by PersonRenderInterface, as sthis is the only one required */ PersonRepository $repository, CenterResolverManagerInterface $centerResolverManager, ResidentialAddressRepository $residentialAddressRepository, - PhoneNumberHelperInterface $phoneNumberHelper + PhoneNumberHelperInterface $phoneNumberHelper /* TODO maybe not necessayr any more */ ) { $this->render = $render; $this->repository = $repository; @@ -189,6 +190,7 @@ class PersonJsonNormalizer implements DenormalizerAwareInterface, NormalizerAwar public function normalize($person, $format = null, array $context = []) { $groups = $context[AbstractNormalizer::GROUPS] ?? []; + if (is_string($groups)) { $groups = [$groups]; } diff --git a/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonJsonNormalizerTest.php b/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonJsonNormalizerTest.php index 59cc0a564..13fa54178 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonJsonNormalizerTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Serializer/Normalizer/PersonJsonNormalizerTest.php @@ -11,7 +11,15 @@ declare(strict_types=1); namespace Serializer\Normalizer; +use Chill\MainBundle\Phonenumber\PhoneNumberHelperInterface; +use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface; +use Chill\MainBundle\Templating\Entity\ChillEntityRenderExtension; use Chill\PersonBundle\Entity\Person; +use Chill\PersonBundle\Repository\PersonRepository; +use Chill\PersonBundle\Repository\ResidentialAddressRepository; +use Chill\PersonBundle\Serializer\Normalizer\PersonJsonNormalizer; +use Prophecy\Argument; +use Prophecy\PhpUnit\ProphecyTrait; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; @@ -22,12 +30,27 @@ use Symfony\Component\Serializer\Normalizer\NormalizerInterface; */ final class PersonJsonNormalizerTest extends KernelTestCase { - private NormalizerInterface $normalizer; + use ProphecyTrait; + + private PersonJsonNormalizer $normalizer; protected function setUp(): void { self::bootKernel(); - $this->normalizer = self::$container->get(NormalizerInterface::class); + + $residentialAddressRepository = $this->prophesize(ResidentialAddressRepository::class); + $residentialAddressRepository + ->findCurrentResidentialAddressByPerson(Argument::type(Person::class), Argument::any()) + ->willReturn([]); + + $this->normalizer = $this->buildPersonJsonNormalizer( + self::$container->get(ChillEntityRenderExtension::class), + self::$container->get(PersonRepository::class), + self::$container->get(CenterResolverManagerInterface::class), + $residentialAddressRepository->reveal(), + self::$container->get(PhoneNumberHelperInterface::class), + self::$container->get(NormalizerInterface::class) + ); } public function testNormalization() @@ -37,4 +60,24 @@ final class PersonJsonNormalizerTest extends KernelTestCase $this->assertIsArray($result); } + + private function buildPersonJsonNormalizer( + ChillEntityRenderExtension $render, + PersonRepository $repository, + CenterResolverManagerInterface $centerResolverManager, + ResidentialAddressRepository $residentialAddressRepository, + PhoneNumberHelperInterface $phoneNumberHelper, + NormalizerInterface $normalizer + ): PersonJsonNormalizer { + $personJsonNormalizer = new PersonJsonNormalizer( + $render, + $repository, + $centerResolverManager, + $residentialAddressRepository, + $phoneNumberHelper + ); + $personJsonNormalizer->setNormalizer($normalizer); + + return $personJsonNormalizer; + } }