Validate if newsletter has an unsubscribe link

[MAILPOET-3857]
This commit is contained in:
Pavel Dohnal
2021-10-19 12:53:50 +02:00
committed by Veljko V
parent 3a67210743
commit 813d43f857
3 changed files with 38 additions and 1 deletions

View File

@ -6,11 +6,13 @@ use Codeception\Util\Fixtures;
use Codeception\Util\Stub;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\API\JSON\v1\SendingQueue as SendingQueueAPI;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterOption;
use MailPoet\Models\NewsletterOptionField;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\SendingQueue as SendingQueueModel;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Segments\SubscribersFinder;
use MailPoet\Settings\SettingsController;
use MailPoet\Settings\SettingsRepository;
@ -65,6 +67,7 @@ class SendingQueueTest extends \MailPoetTest {
Stub::make(SubscribersFeature::class, [
'check' => true,
]),
$this->diContainer->get(NewslettersRepository::class),
$this->diContainer->get(SubscribersFinder::class)
);
$res = $sendingQueue->add(['newsletter_id' => $this->newsletter->id]);
@ -112,6 +115,21 @@ class SendingQueueTest extends \MailPoetTest {
expect($rescheduledTask->scheduledAt)->equals('2018-11-11 11:00:00');
}
public function testItRejectsNewsletterWithoutUnsubscribeLink() {
$newsletter = new NewsletterEntity();
$newsletter->setSubject('subject');
$newsletter->setType(NewsletterEntity::TYPE_STANDARD);
$newsletter->setBody(['content' => ['type' => 'container', 'columnLayout' => false, 'orientation' => 'vertical']]);
$this->entityManager->persist($newsletter);
$this->entityManager->flush();
$sendingQueue = $this->diContainer->get(SendingQueueAPI::class);
$response = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]);
$response = $response->getData();
expect($response['errors'][0])->array();
expect($response['errors'][0]['message'])->stringContainsString('Unsubscribe');
expect($response['errors'][0]['error'])->stringContainsString('bad_request');
}
private function _createOrUpdateNewsletterOptions($newsletterId, $newsletterType, $options) {
foreach ($options as $option => $value) {
$newsletterOptionField = NewsletterOptionField::where('name', $option)->findOne();