Use MailerFactory in sending queue API mailer config check

[MAILPOET-4115]
This commit is contained in:
Rostislav Wolny
2022-03-28 16:24:45 +02:00
committed by Veljko V
parent 904b6dd34c
commit 06fb13bd86
2 changed files with 14 additions and 6 deletions

View File

@ -10,6 +10,7 @@ use MailPoet\Cron\Triggers\WordPress;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Mailer\MailerFactory;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue as SendingQueueModel; use MailPoet\Models\SendingQueue as SendingQueueModel;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
@ -44,13 +45,17 @@ class SendingQueue extends APIEndpoint {
/** @var ScheduledTasksRepository */ /** @var ScheduledTasksRepository */
private $scheduledTasksRepository; private $scheduledTasksRepository;
/** @var MailerFactory */
private $mailerFactory;
public function __construct( public function __construct(
SubscribersFeature $subscribersFeature, SubscribersFeature $subscribersFeature,
NewslettersRepository $newsletterRepository, NewslettersRepository $newsletterRepository,
SendingQueuesRepository $sendingQueuesRepository, SendingQueuesRepository $sendingQueuesRepository,
Bridge $bridge, Bridge $bridge,
SubscribersFinder $subscribersFinder, SubscribersFinder $subscribersFinder,
ScheduledTasksRepository $scheduledTasksRepository ScheduledTasksRepository $scheduledTasksRepository,
MailerFactory $mailerFactory
) { ) {
$this->subscribersFeature = $subscribersFeature; $this->subscribersFeature = $subscribersFeature;
$this->subscribersFinder = $subscribersFinder; $this->subscribersFinder = $subscribersFinder;
@ -58,6 +63,7 @@ class SendingQueue extends APIEndpoint {
$this->bridge = $bridge; $this->bridge = $bridge;
$this->sendingQueuesRepository = $sendingQueuesRepository; $this->sendingQueuesRepository = $sendingQueuesRepository;
$this->scheduledTasksRepository = $scheduledTasksRepository; $this->scheduledTasksRepository = $scheduledTasksRepository;
$this->mailerFactory = $mailerFactory;
} }
public function add($data = []) { public function add($data = []) {
@ -93,10 +99,9 @@ class SendingQueue extends APIEndpoint {
]); ]);
} }
// check that the sending method has been configured properly // check that the sending method has been configured properly by verifying that default mailer can be build
try { try {
$mailer = new \MailPoet\Mailer\Mailer(); $this->mailerFactory->getDefaultMailer();
$mailer->init();
} catch (\Exception $e) { } catch (\Exception $e) {
return $this->errorResponse([ return $this->errorResponse([
$e->getCode() => $e->getMessage(), $e->getCode() => $e->getMessage(),

View File

@ -11,6 +11,7 @@ use MailPoet\Entities\NewsletterOptionEntity;
use MailPoet\Entities\NewsletterOptionFieldEntity; use MailPoet\Entities\NewsletterOptionFieldEntity;
use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Mailer\MailerFactory;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository; use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository;
use MailPoet\Newsletter\Options\NewsletterOptionsRepository; use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
@ -80,7 +81,8 @@ class SendingQueueTest extends \MailPoetTest {
$this->diContainer->get(SendingQueuesRepository::class), $this->diContainer->get(SendingQueuesRepository::class),
$this->diContainer->get(Bridge::class), $this->diContainer->get(Bridge::class),
$this->diContainer->get(SubscribersFinder::class), $this->diContainer->get(SubscribersFinder::class),
$this->diContainer->get(ScheduledTasksRepository::class) $this->diContainer->get(ScheduledTasksRepository::class),
$this->diContainer->get(MailerFactory::class)
); );
$res = $sendingQueue->add(['newsletter_id' => $this->newsletter->getId()]); $res = $sendingQueue->add(['newsletter_id' => $this->newsletter->getId()]);
expect($res->status)->equals(APIResponse::STATUS_FORBIDDEN); expect($res->status)->equals(APIResponse::STATUS_FORBIDDEN);
@ -149,7 +151,8 @@ class SendingQueueTest extends \MailPoetTest {
'isMailpoetSendingServiceEnabled' => true, 'isMailpoetSendingServiceEnabled' => true,
]), ]),
$this->diContainer->get(SubscribersFinder::class), $this->diContainer->get(SubscribersFinder::class),
$this->diContainer->get(ScheduledTasksRepository::class) $this->diContainer->get(ScheduledTasksRepository::class),
$this->diContainer->get(MailerFactory::class)
); );
$response = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]); $response = $sendingQueue->add(['newsletter_id' => $newsletter->getId()]);
$response = $response->getData(); $response = $response->getData();