fix bootstrapping listener for person capitalization name

This commit is contained in:
Julien Fastré 2021-10-11 14:49:51 +02:00
parent 0c5e5ac672
commit 2db9a98bfe
4 changed files with 26 additions and 41 deletions

View File

@ -268,7 +268,7 @@ final class PersonController extends AbstractController
) { ) {
$this->em->persist($person); $this->em->persist($person);
// $this->em->flush(); $this->em->flush();
$this->lastPostDataReset(); $this->lastPostDataReset();
if ($form->get('createPeriod')->isClicked()) { if ($form->get('createPeriod')->isClicked()) {

View File

@ -12,28 +12,19 @@ use Symfony\Component\Validator\Exception\LogicException as ExceptionLogicExcept
class PersonEventListener 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(); $lastnameCaps = mb_strtoupper($person->getLastName(), 'UTF-8');
$firstnameCaps = mb_convert_case(mb_strtolower($person->getFirstName()), MB_CASE_TITLE, 'UTF-8'); $person->setLastName($lastnameCaps);
$firstnameCaps = ucwords(strtolower($firstnameCaps), " \t\r\n\f\v'-"); }
$person->setFirstName($firstnameCaps);
$lastnameCaps = mb_strtoupper($person->getLastName(), 'UTF-8'); public function prePersistAltName(PersonAltName $altname)
$person->setLastName($lastnameCaps); {
$altnameCaps = mb_strtoupper($altname->getLabel(), 'UTF-8');
} elseif ($event->getObject() instanceof PersonAltName){ $altname->setLabel($altnameCaps);
$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');
}
} }
} }

View File

@ -20,11 +20,7 @@ class PersonCreateEventTest extends TestCase
$person->setFirstName($firstname); $person->setFirstName($firstname);
$person->setLastName($lastname); $person->setLastName($lastname);
$args = $this->createMock(LifecycleEventArgs::class); $listener->prePersistPerson($person);
$args->method('getObject')
->willReturn($person);
$listener->onPrePersist($args);
$this->assertEquals($firstnameExpected, $person->getFirstName()); $this->assertEquals($firstnameExpected, $person->getFirstName());
$this->assertEquals($lastnameExpected, $person->getLastName()); $this->assertEquals($lastnameExpected, $person->getLastName());
@ -41,11 +37,7 @@ class PersonCreateEventTest extends TestCase
$personAltname->setLabel($altname); $personAltname->setLabel($altname);
$args = $this->createMock(LifecycleEventArgs::class); $listener->prePersistAltName($personAltname);
$args->method('getObject')
->willReturn($personAltname);
$listener->onPrePersist($args);
$this->assertEquals($altnameExpected, $personAltname->getLabel()); $this->assertEquals($altnameExpected, $personAltname->getLabel());
} }

View File

@ -4,9 +4,11 @@ services:
tags: tags:
- -
name: 'doctrine.orm.entity_listener' name: 'doctrine.orm.entity_listener'
event: 'onPrePersist' event: 'prePersist'
entity: 'Chill\PersonBundle\Entity\Person' entity: 'Chill\PersonBundle\Entity\Person'
method: 'prePersistPerson'
- -
name: 'doctrine.orm.entity_listener' name: 'doctrine.orm.entity_listener'
event: 'onPrePersist' event: 'prePersist'
entity: 'Chill\PersonBundle\Entity\PersonAltName' entity: 'Chill\PersonBundle\Entity\PersonAltName'
method: 'prePersistAltName'