Use DI for automatic emails in JSON API
[MAILPOET-3924]
This commit is contained in:
@@ -4,6 +4,7 @@ namespace MailPoet\API\JSON\v1;
|
||||
|
||||
use MailPoet\API\JSON\Endpoint as APIEndpoint;
|
||||
use MailPoet\API\JSON\Error as APIError;
|
||||
use MailPoet\AutomaticEmails\AutomaticEmails as AutomaticEmailsController;
|
||||
use MailPoet\Config\AccessControl;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
@@ -12,10 +13,18 @@ class AutomaticEmails extends APIEndpoint {
|
||||
'global' => AccessControl::PERMISSION_MANAGE_SEGMENTS,
|
||||
];
|
||||
|
||||
/** @var AutomaticEmailsController */
|
||||
private $automaticEmails;
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
public function __construct() {
|
||||
$this->wp = new WPFunctions;
|
||||
public function __construct(
|
||||
AutomaticEmailsController $automaticEmails,
|
||||
WPFunctions $wp
|
||||
) {
|
||||
$this->automaticEmails = $automaticEmails;
|
||||
$this->wp = $wp;
|
||||
}
|
||||
|
||||
public function getEventOptions($data) {
|
||||
@@ -32,8 +41,7 @@ class AutomaticEmails extends APIEndpoint {
|
||||
);
|
||||
}
|
||||
|
||||
$automaticEmails = new \MailPoet\AutomaticEmails\AutomaticEmails();
|
||||
$event = $automaticEmails->getAutomaticEmailEventBySlug($emailSlug, $eventSlug);
|
||||
$event = $this->automaticEmails->getAutomaticEmailEventBySlug($emailSlug, $eventSlug);
|
||||
$eventFilter = (!empty($event['options']['remoteQueryFilter'])) ? $event['options']['remoteQueryFilter'] : null;
|
||||
|
||||
return ($eventFilter === $filter && WPFunctions::get()->hasFilter($eventFilter)) ?
|
||||
@@ -57,9 +65,8 @@ class AutomaticEmails extends APIEndpoint {
|
||||
);
|
||||
}
|
||||
|
||||
$automaticEmails = new \MailPoet\AutomaticEmails\AutomaticEmails();
|
||||
$automaticEmail = $automaticEmails->getAutomaticEmailBySlug($emailSlug);
|
||||
$event = $automaticEmails->getAutomaticEmailEventBySlug($emailSlug, $eventSlug);
|
||||
$automaticEmail = $this->automaticEmails->getAutomaticEmailBySlug($emailSlug);
|
||||
$event = $this->automaticEmails->getAutomaticEmailEventBySlug($emailSlug, $eventSlug);
|
||||
|
||||
if (!$event) {
|
||||
return $this->errorResponse(
|
||||
|
@@ -91,7 +91,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\API\JSON\ResponseBuilders\SegmentsResponseBuilder::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\ResponseBuilders\DynamicSegmentsResponseBuilder::class)->setPublic(true);
|
||||
// Automatic emails
|
||||
$container->autowire(\MailPoet\AutomaticEmails\AutomaticEmails::class);
|
||||
$container->autowire(\MailPoet\AutomaticEmails\AutomaticEmails::class)->setPublic(true);
|
||||
// Config
|
||||
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Config\Activator::class)->setPublic(true);
|
||||
|
@@ -2,17 +2,21 @@
|
||||
|
||||
namespace MailPoet\API\JSON\v1;
|
||||
|
||||
use MailPoet\AutomaticEmails\AutomaticEmails as AutomaticEmailsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class AutomaticEmailsTest extends \MailPoetTest {
|
||||
public $wp;
|
||||
|
||||
/** @var AutomaticEmails */
|
||||
private $api;
|
||||
|
||||
public function _before() {
|
||||
$this->wp = new WPFunctions;
|
||||
$this->api = new AutomaticEmails(new AutomaticEmailsController($this->wp), $this->wp);
|
||||
}
|
||||
|
||||
public function testItRequiresProperlyFormattedRequestWhenGettingEventOptions() {
|
||||
$API = new AutomaticEmails();
|
||||
$expectedErrorMessage = 'Improperly formatted request.';
|
||||
|
||||
// query is invalid
|
||||
@@ -22,7 +26,7 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => 'email_slug',
|
||||
'event_slug' => 'event_slug',
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
|
||||
// filter is invalid
|
||||
@@ -32,7 +36,7 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => 'email_slug',
|
||||
'event_slug' => 'event_slug',
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
|
||||
// email slug is invalid
|
||||
@@ -42,7 +46,7 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => null,
|
||||
'event_slug' => 'event_slug',
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
|
||||
// event slug is invalid
|
||||
@@ -52,12 +56,11 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => 'email_slug',
|
||||
'event_slug' => null,
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
}
|
||||
|
||||
public function testItRequiresValidEventFilterWhenGettingEventOptions() {
|
||||
$API = new AutomaticEmails();
|
||||
$expectedErrorMessage = 'Automatic email event filter does not exist.';
|
||||
|
||||
$this->wp->addFilter('mailpoet_automatic_email_test', function() {
|
||||
@@ -90,7 +93,7 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => 'email',
|
||||
'event_slug' => 'event_slug',
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
|
||||
$this->wp->removeAllFilters('mailpoet_automatic_email_test');
|
||||
@@ -98,8 +101,6 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItGetsEventOptions() {
|
||||
$API = new AutomaticEmails();
|
||||
|
||||
$this->wp->addFilter('mailpoet_automatic_email_test', function() {
|
||||
return [
|
||||
'slug' => 'email',
|
||||
@@ -129,7 +130,7 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => 'email',
|
||||
'event_slug' => 'event_slug',
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->data)->equals('pass');
|
||||
|
||||
$this->wp->removeAllFilters('mailpoet_automatic_email_test');
|
||||
@@ -137,7 +138,6 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItRequiresProperlyFormattedRequestWhenGettingEventShortcodes() {
|
||||
$API = new AutomaticEmails();
|
||||
$expectedErrorMessage = 'Improperly formatted request.';
|
||||
|
||||
// email slug is invalid
|
||||
@@ -145,7 +145,7 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => null,
|
||||
'event_slug' => 'event_slug',
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
|
||||
// event slug is invalid
|
||||
@@ -153,12 +153,11 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => 'email_slug',
|
||||
'event_slug' => null,
|
||||
];
|
||||
$result = $API->getEventOptions($data);
|
||||
$result = $this->api->getEventOptions($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
}
|
||||
|
||||
public function testItRequiresValidEventWhenGettingEventShortcodes() {
|
||||
$API = new AutomaticEmails();
|
||||
$expectedErrorMessage = 'Automatic email event does not exist.';
|
||||
|
||||
$this->wp->addFilter('mailpoet_automatic_email_test', function() {
|
||||
@@ -182,14 +181,13 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'event_slug' => 'invalid_event',
|
||||
// should be 'event_slug'
|
||||
];
|
||||
$result = $API->getEventShortcodes($data);
|
||||
$result = $this->api->getEventShortcodes($data);
|
||||
expect($result->errors[0]['message'])->equals($expectedErrorMessage);
|
||||
|
||||
$this->wp->removeAllFilters('mailpoet_automatic_email_test');
|
||||
}
|
||||
|
||||
public function testItGetsEventShortcodes() {
|
||||
$API = new AutomaticEmails();
|
||||
$shortcodes = [
|
||||
[
|
||||
'text' => 'shortcode_text',
|
||||
@@ -217,7 +215,7 @@ class AutomaticEmailsTest extends \MailPoetTest {
|
||||
'email_slug' => 'email',
|
||||
'event_slug' => 'event_slug',
|
||||
];
|
||||
$result = $API->getEventShortcodes($data);
|
||||
$result = $this->api->getEventShortcodes($data);
|
||||
expect($result->data['email_title'])->equals($shortcodes);
|
||||
|
||||
$this->wp->removeAllFilters('mailpoet_automatic_email_test');
|
||||
|
Reference in New Issue
Block a user