diff --git a/lib/API/JSON/v1/AutomaticEmails.php b/lib/API/JSON/v1/AutomaticEmails.php index 7f89d6ef3a..58f4877e6d 100644 --- a/lib/API/JSON/v1/AutomaticEmails.php +++ b/lib/API/JSON/v1/AutomaticEmails.php @@ -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( diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 5ba6438dff..34ec581aa5 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -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); diff --git a/tests/integration/API/JSON/v1/AutomaticEmailsTest.php b/tests/integration/API/JSON/v1/AutomaticEmailsTest.php index 68c9d437cb..c51ed15d69 100644 --- a/tests/integration/API/JSON/v1/AutomaticEmailsTest.php +++ b/tests/integration/API/JSON/v1/AutomaticEmailsTest.php @@ -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');