diff --git a/mailpoet/lib/API/JSON/v1/SendingQueue.php b/mailpoet/lib/API/JSON/v1/SendingQueue.php index 23bdc8bd8b..c116b44315 100644 --- a/mailpoet/lib/API/JSON/v1/SendingQueue.php +++ b/mailpoet/lib/API/JSON/v1/SendingQueue.php @@ -10,6 +10,7 @@ use MailPoet\Cron\Triggers\WordPress; use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\SendingQueueEntity; +use MailPoet\Mailer\MailerFactory; use MailPoet\Models\Newsletter; use MailPoet\Models\SendingQueue as SendingQueueModel; use MailPoet\Newsletter\NewslettersRepository; @@ -44,13 +45,17 @@ class SendingQueue extends APIEndpoint { /** @var ScheduledTasksRepository */ private $scheduledTasksRepository; + /** @var MailerFactory */ + private $mailerFactory; + public function __construct( SubscribersFeature $subscribersFeature, NewslettersRepository $newsletterRepository, SendingQueuesRepository $sendingQueuesRepository, Bridge $bridge, SubscribersFinder $subscribersFinder, - ScheduledTasksRepository $scheduledTasksRepository + ScheduledTasksRepository $scheduledTasksRepository, + MailerFactory $mailerFactory ) { $this->subscribersFeature = $subscribersFeature; $this->subscribersFinder = $subscribersFinder; @@ -58,6 +63,7 @@ class SendingQueue extends APIEndpoint { $this->bridge = $bridge; $this->sendingQueuesRepository = $sendingQueuesRepository; $this->scheduledTasksRepository = $scheduledTasksRepository; + $this->mailerFactory = $mailerFactory; } 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 { - $mailer = new \MailPoet\Mailer\Mailer(); - $mailer->init(); + $this->mailerFactory->getDefaultMailer(); } catch (\Exception $e) { return $this->errorResponse([ $e->getCode() => $e->getMessage(), diff --git a/mailpoet/tests/integration/API/JSON/v1/SendingQueueTest.php b/mailpoet/tests/integration/API/JSON/v1/SendingQueueTest.php index 9678e916ba..3d448a70bf 100644 --- a/mailpoet/tests/integration/API/JSON/v1/SendingQueueTest.php +++ b/mailpoet/tests/integration/API/JSON/v1/SendingQueueTest.php @@ -11,6 +11,7 @@ use MailPoet\Entities\NewsletterOptionEntity; use MailPoet\Entities\NewsletterOptionFieldEntity; use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\SendingQueueEntity; +use MailPoet\Mailer\MailerFactory; use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\Options\NewsletterOptionFieldsRepository; use MailPoet\Newsletter\Options\NewsletterOptionsRepository; @@ -80,7 +81,8 @@ class SendingQueueTest extends \MailPoetTest { $this->diContainer->get(SendingQueuesRepository::class), $this->diContainer->get(Bridge::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()]); expect($res->status)->equals(APIResponse::STATUS_FORBIDDEN); @@ -149,7 +151,8 @@ class SendingQueueTest extends \MailPoetTest { 'isMailpoetSendingServiceEnabled' => true, ]), $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 = $response->getData();