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