Prevent segmentation of automation emails
[MAILPOET-4432]
This commit is contained in:
committed by
alex-mailpoet
parent
c0504f52a0
commit
445d07ac68
@ -122,6 +122,7 @@ class NewsletterSaveController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$newsletter = isset($data['id']) ? $this->getNewsletter($data) : $this->createNewsletter($data);
|
$newsletter = isset($data['id']) ? $this->getNewsletter($data) : $this->createNewsletter($data);
|
||||||
|
$data = $this->sanitizeAutomationEmailData($data, $newsletter);
|
||||||
$oldSenderAddress = $newsletter->getSenderAddress();
|
$oldSenderAddress = $newsletter->getSenderAddress();
|
||||||
|
|
||||||
$this->updateNewsletter($newsletter, $data);
|
$this->updateNewsletter($newsletter, $data);
|
||||||
@ -153,6 +154,14 @@ class NewsletterSaveController {
|
|||||||
return $newsletter;
|
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 {
|
public function duplicate(NewsletterEntity $newsletter): NewsletterEntity {
|
||||||
$duplicate = clone $newsletter;
|
$duplicate = clone $newsletter;
|
||||||
|
|
||||||
|
@ -406,6 +406,18 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
expect($response->errors[0]['message'])->equals('Please specify a type.');
|
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() {
|
public function testItHasDefaultSenderAfterCreate() {
|
||||||
$data = [
|
$data = [
|
||||||
'subject' => 'My First Newsletter',
|
'subject' => 'My First Newsletter',
|
||||||
|
@ -43,6 +43,10 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItDoesNotScheduleAutomationEmailsWithTheSendingQueue() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function testItCreatesNewScheduledSendingQueueTask() {
|
public function testItCreatesNewScheduledSendingQueueTask() {
|
||||||
$newsletter = $this->newsletter;
|
$newsletter = $this->newsletter;
|
||||||
$newsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);
|
$newsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED);
|
||||||
|
@ -201,6 +201,26 @@ class NewsletterSaveControllerTest extends \MailPoetTest {
|
|||||||
expect($segment->getName())->equals('Segment 1');
|
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() {
|
public function testItDeletesSendingQueueAndSetsNewsletterStatusToDraftWhenItIsUnscheduled() {
|
||||||
$newsletter = $this->createNewsletter(NewsletterEntity::TYPE_STANDARD, NewsletterEntity::STATUS_SCHEDULED);
|
$newsletter = $this->createNewsletter(NewsletterEntity::TYPE_STANDARD, NewsletterEntity::STATUS_SCHEDULED);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user