Verify that new email is unique when editing a subscriber

Throws an exception with information message if email already exists.

[MAILPOET-4259]
This commit is contained in:
Brezo Cordero
2022-05-20 21:20:18 -05:00
committed by Veljko V
parent 978afcdc1c
commit 2e5e8e808f
4 changed files with 114 additions and 23 deletions

View File

@ -2,6 +2,7 @@
namespace MailPoet\Subscribers;
use MailPoet\ConflictException;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
@ -87,6 +88,22 @@ class SubscriberSaveControllerTest extends \MailPoetTest {
expect($subscriber->getSubscriberSegments())->count(1);
}
public function testItThrowsExceptionWhenUpdatingSubscriberEmailIfNotUnique(): void {
$subscriber = $this->createSubscriber('second@test.com', SubscriberEntity::STATUS_UNCONFIRMED);
$subscriber2 = $this->createSubscriber('third@test.com', SubscriberEntity::STATUS_UNCONFIRMED);
$data = [
'id' => $subscriber->getId(),
'email' => $subscriber2->getEmail(),
];
$this->entityManager->clear();
$this->expectException(ConflictException::class);
$this->expectExceptionMessage("A subscriber with E-mail '{$subscriber2->getEmail()}' already exists.");
$this->saveController->save($data);
}
public function testItDeletesOrphanSubscriberSegmentsOnUpdate(): void {
$subscriber = $this->createSubscriber('second@test.com', SubscriberEntity::STATUS_UNCONFIRMED);
$segmentOne = $this->segmentsRepository->createOrUpdate('Segment One');