From 2db9a98bfe14ce3a9f03033c525009dd9ec3cf97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Mon, 11 Oct 2021 14:49:51 +0200 Subject: [PATCH] fix bootstrapping listener for person capitalization name --- .../Controller/PersonController.php | 2 +- .../EventListener/PersonEventListener.php | 35 +++++++------------ .../EventListener/PersonCreateEventTest.php | 14 ++------ .../services/doctrineEventListener.yaml | 16 +++++---- 4 files changed, 26 insertions(+), 41 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Controller/PersonController.php b/src/Bundle/ChillPersonBundle/Controller/PersonController.php index a7249dda0..f9190857c 100644 --- a/src/Bundle/ChillPersonBundle/Controller/PersonController.php +++ b/src/Bundle/ChillPersonBundle/Controller/PersonController.php @@ -268,7 +268,7 @@ final class PersonController extends AbstractController ) { $this->em->persist($person); - // $this->em->flush(); + $this->em->flush(); $this->lastPostDataReset(); if ($form->get('createPeriod')->isClicked()) { diff --git a/src/Bundle/ChillPersonBundle/EventListener/PersonEventListener.php b/src/Bundle/ChillPersonBundle/EventListener/PersonEventListener.php index 6c9b746d7..20855a166 100644 --- a/src/Bundle/ChillPersonBundle/EventListener/PersonEventListener.php +++ b/src/Bundle/ChillPersonBundle/EventListener/PersonEventListener.php @@ -12,28 +12,19 @@ use Symfony\Component\Validator\Exception\LogicException as ExceptionLogicExcept class PersonEventListener { - public function onPrePersist(LifecycleEventArgs $event): void + public function prePersistPerson(Person $person): void { - if($event->getObject() instanceof Person){ + $firstnameCaps = mb_convert_case(mb_strtolower($person->getFirstName()), MB_CASE_TITLE, 'UTF-8'); + $firstnameCaps = ucwords(strtolower($firstnameCaps), " \t\r\n\f\v'-"); + $person->setFirstName($firstnameCaps); - $person = $event->getObject(); - $firstnameCaps = mb_convert_case(mb_strtolower($person->getFirstName()), MB_CASE_TITLE, 'UTF-8'); - $firstnameCaps = ucwords(strtolower($firstnameCaps), " \t\r\n\f\v'-"); - $person->setFirstName($firstnameCaps); - - $lastnameCaps = mb_strtoupper($person->getLastName(), 'UTF-8'); - $person->setLastName($lastnameCaps); - - } elseif ($event->getObject() instanceof PersonAltName){ - - $altname = $event->getObject(); - $altnameCaps = mb_strtoupper($altname->getLabel(), 'UTF-8'); - $altname->setLabel($altnameCaps); - - } else { - - throw new LogicException('Entity must be a person or an altname'); - - } + $lastnameCaps = mb_strtoupper($person->getLastName(), 'UTF-8'); + $person->setLastName($lastnameCaps); } -} \ No newline at end of file + + public function prePersistAltName(PersonAltName $altname) + { + $altnameCaps = mb_strtoupper($altname->getLabel(), 'UTF-8'); + $altname->setLabel($altnameCaps); + } +} diff --git a/src/Bundle/ChillPersonBundle/Tests/EventListener/PersonCreateEventTest.php b/src/Bundle/ChillPersonBundle/Tests/EventListener/PersonCreateEventTest.php index c8690a237..fb878053f 100644 --- a/src/Bundle/ChillPersonBundle/Tests/EventListener/PersonCreateEventTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/EventListener/PersonCreateEventTest.php @@ -20,11 +20,7 @@ class PersonCreateEventTest extends TestCase $person->setFirstName($firstname); $person->setLastName($lastname); - $args = $this->createMock(LifecycleEventArgs::class); - $args->method('getObject') - ->willReturn($person); - - $listener->onPrePersist($args); + $listener->prePersistPerson($person); $this->assertEquals($firstnameExpected, $person->getFirstName()); $this->assertEquals($lastnameExpected, $person->getLastName()); @@ -41,11 +37,7 @@ class PersonCreateEventTest extends TestCase $personAltname->setLabel($altname); - $args = $this->createMock(LifecycleEventArgs::class); - $args->method('getObject') - ->willReturn($personAltname); - - $listener->onPrePersist($args); + $listener->prePersistAltName($personAltname); $this->assertEquals($altnameExpected, $personAltname->getLabel()); } @@ -66,4 +58,4 @@ class PersonCreateEventTest extends TestCase yield ['fastré', 'FASTRÉ']; yield ['émile', 'ÉMILE']; } -} \ No newline at end of file +} diff --git a/src/Bundle/ChillPersonBundle/config/services/doctrineEventListener.yaml b/src/Bundle/ChillPersonBundle/config/services/doctrineEventListener.yaml index 6d038d7a5..f75243d02 100644 --- a/src/Bundle/ChillPersonBundle/config/services/doctrineEventListener.yaml +++ b/src/Bundle/ChillPersonBundle/config/services/doctrineEventListener.yaml @@ -1,12 +1,14 @@ services: Chill\PersonBundle\EventListener\PersonEventListener: autoconfigure: true - tags: - - - name: 'doctrine.orm.entity_listener' - event: 'onPrePersist' - entity: 'Chill\PersonBundle\Entity\Person' + tags: - name: 'doctrine.orm.entity_listener' - event: 'onPrePersist' - entity: 'Chill\PersonBundle\Entity\PersonAltName' \ No newline at end of file + event: 'prePersist' + entity: 'Chill\PersonBundle\Entity\Person' + method: 'prePersistPerson' + - + name: 'doctrine.orm.entity_listener' + event: 'prePersist' + entity: 'Chill\PersonBundle\Entity\PersonAltName' + method: 'prePersistAltName'