Newsletter validation updates

- Rename validator to newsletterValidator for clarity
- Add validation for ALC content
- Refactor tests to use data factory for consistency and to avoid
validation issues
- Add separate tests for NewsletterValidator service
- Add test helper for retrieving service with private properties
overridden by name

[MAILPOET-4236]
This commit is contained in:
John Oleksowicz
2022-04-18 14:00:43 -05:00
committed by Veljko V
parent a5103f9596
commit 9bfe2b2ca1
9 changed files with 184 additions and 41 deletions

View File

@ -17,12 +17,12 @@ use MailPoet\Listing;
use MailPoet\Newsletter\Listing\NewsletterListingRepository;
use MailPoet\Newsletter\NewsletterSaveController;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\NewsletterValidator;
use MailPoet\Newsletter\Preview\SendPreviewController;
use MailPoet\Newsletter\Preview\SendPreviewException;
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
use MailPoet\Newsletter\Scheduler\Scheduler;
use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Newsletter\Validator;
use MailPoet\Settings\SettingsController;
use MailPoet\UnexpectedValueException;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
@ -76,11 +76,8 @@ class Newsletters extends APIEndpoint {
/** @var NewsletterUrl */
private $newsletterUrl;
/** @var TrackingConfig */
private $trackingConfig;
/** @var Validator */
private $validator;
/** @var NewsletterValidator */
private $newsletterValidator;
/** @var Scheduler */
private $scheduler;
@ -100,7 +97,7 @@ class Newsletters extends APIEndpoint {
NewsletterSaveController $newsletterSaveController,
NewsletterUrl $newsletterUrl,
Scheduler $scheduler,
Validator $validator
NewsletterValidator $newsletterValidator
) {
$this->listingHandler = $listingHandler;
$this->wp = $wp;
@ -116,7 +113,7 @@ class Newsletters extends APIEndpoint {
$this->newsletterSaveController = $newsletterSaveController;
$this->newsletterUrl = $newsletterUrl;
$this->scheduler = $scheduler;
$this->validator = $validator;
$this->newsletterValidator = $newsletterValidator;
}
public function get($data = []) {
@ -188,7 +185,7 @@ class Newsletters extends APIEndpoint {
}
if ($status === NewsletterEntity::STATUS_ACTIVE) {
$validationError = $this->validator->validate($newsletter);
$validationError = $this->newsletterValidator->validate($newsletter);
if ($validationError !== null) {
return $this->errorResponse([APIError::FORBIDDEN => $validationError], [], Response::STATUS_FORBIDDEN);
}

View File

@ -14,10 +14,10 @@ use MailPoet\Mailer\MailerFactory;
use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue as SendingQueueModel;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\NewsletterValidator;
use MailPoet\Newsletter\Scheduler\Scheduler;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Newsletter\Validator;
use MailPoet\Segments\SubscribersFinder;
use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
@ -45,12 +45,12 @@ class SendingQueue extends APIEndpoint {
/** @var MailerFactory */
private $mailerFactory;
/** @var NewsletterValidator */
private $newsletterValidator;
/** @var Scheduler */
private $scheduler;
/** @var Validator */
private $validator;
public function __construct(
SubscribersFeature $subscribersFeature,
NewslettersRepository $newsletterRepository,
@ -59,7 +59,7 @@ class SendingQueue extends APIEndpoint {
ScheduledTasksRepository $scheduledTasksRepository,
MailerFactory $mailerFactory,
Scheduler $scheduler,
Validator $validator
NewsletterValidator $newsletterValidator
) {
$this->subscribersFeature = $subscribersFeature;
$this->subscribersFinder = $subscribersFinder;
@ -68,7 +68,7 @@ class SendingQueue extends APIEndpoint {
$this->scheduledTasksRepository = $scheduledTasksRepository;
$this->mailerFactory = $mailerFactory;
$this->scheduler = $scheduler;
$this->validator = $validator;
$this->newsletterValidator = $newsletterValidator;
}
public function add($data = []) {
@ -97,7 +97,7 @@ class SendingQueue extends APIEndpoint {
]);
}
$validationError = $this->validator->validate($newsletterEntity);
$validationError = $this->newsletterValidator->validate($newsletterEntity);
if ($validationError) {
return $this->errorResponse([
APIError::BAD_REQUEST => $validationError,