From 623b26f60f74e0c9bf075208c230d43f7673ea46 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 7 Feb 2024 09:42:59 +0200 Subject: [PATCH] email phone fields save fix --- .../FieldProcessing/EmailAddress/Saver.php | 2 +- .../FieldProcessing/PhoneNumber/Saver.php | 2 +- .../Core/FieldProcessing/EmailAddressTest.php | 22 ++++++++++++++++++- .../Core/FieldProcessing/PhoneNumberTest.php | 22 ++++++++++++++++++- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php b/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php index 2c0988387e..6d952e0825 100644 --- a/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php +++ b/application/Espo/Core/FieldProcessing/EmailAddress/Saver.php @@ -69,7 +69,7 @@ class Saver implements SaverInterface $emailAddressData = $entity->get('emailAddressData'); } - if ($emailAddressData !== null) { + if ($emailAddressData !== null && $entity->isAttributeChanged('emailAddressData')) { $this->storeData($entity); return; diff --git a/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php b/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php index f1b3aad527..37fc54f024 100644 --- a/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php +++ b/application/Espo/Core/FieldProcessing/PhoneNumber/Saver.php @@ -74,7 +74,7 @@ class Saver implements SaverInterface $phoneNumberData = $entity->get('phoneNumberData'); } - if ($phoneNumberData !== null) { + if ($phoneNumberData !== null && $entity->isAttributeChanged('phoneNumberData')) { $this->storeData($entity); return; diff --git a/tests/integration/Espo/Core/FieldProcessing/EmailAddressTest.php b/tests/integration/Espo/Core/FieldProcessing/EmailAddressTest.php index 9492e737a6..6e093b6cad 100644 --- a/tests/integration/Espo/Core/FieldProcessing/EmailAddressTest.php +++ b/tests/integration/Espo/Core/FieldProcessing/EmailAddressTest.php @@ -31,10 +31,12 @@ namespace tests\integration\Espo\Core\FieldProcessing; use Espo\Core\ORM\EntityManager; +use Espo\Modules\Crm\Entities\Contact; use Espo\Core\{ Field\EmailAddressGroup, Field\EmailAddress, -}; + Record\ServiceContainer, + Record\UpdateParams}; class EmailAddressTest extends \tests\integration\Core\BaseTestCase { @@ -120,4 +122,22 @@ class EmailAddressTest extends \tests\integration\Core\BaseTestCase $this->assertEquals('test@test.com', $group->getPrimary()->getAddress()); } + + public function testEmailAddress3(): void + { + $service = $this->getContainer()->getByClass(ServiceContainer::class)->getByClass(Contact::class); + $em = $this->getEntityManager(); + + /** @var Contact $contact */ + $contact = $em->createEntity(Contact::ENTITY_TYPE); + + /** @noinspection PhpUnhandledExceptionInspection */ + $service->update($contact->getId(), (object) [ + 'emailAddress' => 'test@test.com', + ], UpdateParams::create()); + + $em->refreshEntity($contact); + + $this->assertEquals('test@test.com', $contact->getEmailAddress()); + } } diff --git a/tests/integration/Espo/Core/FieldProcessing/PhoneNumberTest.php b/tests/integration/Espo/Core/FieldProcessing/PhoneNumberTest.php index 225ea494e1..12348d7199 100644 --- a/tests/integration/Espo/Core/FieldProcessing/PhoneNumberTest.php +++ b/tests/integration/Espo/Core/FieldProcessing/PhoneNumberTest.php @@ -31,10 +31,12 @@ namespace tests\integration\Espo\Core\FieldProcessing; use Espo\Core\ORM\EntityManager; +use Espo\Modules\Crm\Entities\Contact; use Espo\Core\{ Field\PhoneNumberGroup, Field\PhoneNumber, -}; + Record\ServiceContainer, + Record\UpdateParams}; class PhoneNumberTest extends \tests\integration\Core\BaseTestCase { @@ -99,4 +101,22 @@ class PhoneNumberTest extends \tests\integration\Core\BaseTestCase $this->assertEquals(1, $group5->getCount()); } + + public function testPhoneNumber2(): void + { + $service = $this->getContainer()->getByClass(ServiceContainer::class)->getByClass(Contact::class); + $em = $this->getEntityManager(); + + /** @var Contact $contact */ + $contact = $em->createEntity(Contact::ENTITY_TYPE); + + /** @noinspection PhpUnhandledExceptionInspection */ + $service->update($contact->getId(), (object) [ + 'phoneNumber' => '+11111111111', + ], UpdateParams::create()); + + $em->refreshEntity($contact); + + $this->assertEquals('+11111111111', $contact->getPhoneNumber()); + } }