Prevent segmentation of automation emails

[MAILPOET-4432]
This commit is contained in:
David Remer
2022-06-22 11:31:49 +03:00
committed by alex-mailpoet
parent c0504f52a0
commit 445d07ac68
4 changed files with 45 additions and 0 deletions

View File

@ -122,6 +122,7 @@ class NewsletterSaveController {
}
$newsletter = isset($data['id']) ? $this->getNewsletter($data) : $this->createNewsletter($data);
$data = $this->sanitizeAutomationEmailData($data, $newsletter);
$oldSenderAddress = $newsletter->getSenderAddress();
$this->updateNewsletter($newsletter, $data);
@ -153,6 +154,14 @@ class NewsletterSaveController {
return $newsletter;
}
private function sanitizeAutomationEmailData(array $data, NewsletterEntity $newsletter): array {
if ($newsletter->getType() !== NewsletterEntity::TYPE_AUTOMATION) {
return $data;
}
$data['segments'] = [];
return $data;
}
public function duplicate(NewsletterEntity $newsletter): NewsletterEntity {
$duplicate = clone $newsletter;

View File

@ -406,6 +406,18 @@ class NewslettersTest extends \MailPoetTest {
expect($response->errors[0]['message'])->equals('Please specify a type.');
}
public function testItCanCreateAnAutomationNewsletter() {
$data = [
'subject' => 'My Automation newsletter',
'type' => NewsletterEntity::TYPE_AUTOMATION,
];
$response = $this->endpoint->create($data);
expect($response->status)->equals(APIResponse::STATUS_OK);
$newsletter = $this->newsletterRepository->findOneBy(['subject' => 'My Automation newsletter']);
assert($newsletter instanceof NewsletterEntity);
expect($response->data)->equals($this->newslettersResponseBuilder->build($newsletter));
}
public function testItHasDefaultSenderAfterCreate() {
$data = [
'subject' => 'My First Newsletter',

View File

@ -43,6 +43,10 @@ class SendingQueueTest extends \MailPoetTest {
]);
}
public function testItDoesNotScheduleAutomationEmailsWithTheSendingQueue() {
}
public function testItCreatesNewScheduledSendingQueueTask() {
$newsletter = $this->newsletter;
$newsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);

View File

@ -201,6 +201,26 @@ class NewsletterSaveControllerTest extends \MailPoetTest {
expect($segment->getName())->equals('Segment 1');
}
public function testItDoesNotSaveSegmentsForAutomationEmails() {
$segment = new SegmentEntity('Segment 1', SegmentEntity::TYPE_DEFAULT, 'Segment 1 description');
$this->entityManager->persist($segment);
$this->entityManager->flush();
$fakeSegmentId = 1;
$newsletter = $this->createNewsletter(NewsletterEntity::TYPE_AUTOMATION);
$newsletterData = [
'id' => $newsletter->getId(),
'segments' => [
['id' => $segment->getId()],
$fakeSegmentId,
],
];
$newsletter = $this->saveController->save($newsletterData);
expect(count($newsletter->getNewsletterSegments()))->equals(0);
}
public function testItDeletesSendingQueueAndSetsNewsletterStatusToDraftWhenItIsUnscheduled() {
$newsletter = $this->createNewsletter(NewsletterEntity::TYPE_STANDARD, NewsletterEntity::STATUS_SCHEDULED);