Refactor MailPoet\Router, Services to use new settings

[MAILPOET-1757]
This commit is contained in:
Rostislav Wolny
2019-01-30 14:00:31 +01:00
parent fce709a7fc
commit 9399e19e3b
4 changed files with 48 additions and 24 deletions

View File

@@ -8,6 +8,7 @@ use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Newsletter\ViewInBrowser as NewsletterViewInBrowser; use MailPoet\Newsletter\ViewInBrowser as NewsletterViewInBrowser;
use MailPoet\Settings\SettingsController;
if(!defined('ABSPATH')) exit; if(!defined('ABSPATH')) exit;
@@ -18,15 +19,20 @@ class ViewInBrowser {
public $permissions = array( public $permissions = array(
'global' => AccessControl::NO_ACCESS_RESTRICTION 'global' => AccessControl::NO_ACCESS_RESTRICTION
); );
/** @var AccessControl */
private $access_control; private $access_control;
function __construct(AccessControl $access_control) { /** @var SettingsController */
private $settings;
function __construct(AccessControl $access_control, SettingsController $settings) {
$this->access_control = $access_control; $this->access_control = $access_control;
$this->settings = $settings;
} }
function view($data) { function view($data) {
$data = $this->_processBrowserPreviewData($data); $data = $this->_processBrowserPreviewData($data);
$view_in_browser = new NewsletterViewInBrowser(); $view_in_browser = new NewsletterViewInBrowser((bool)$this->settings->get('tracking.enabled'));
return $this->_displayNewsletter($view_in_browser->view($data)); return $this->_displayNewsletter($view_in_browser->view($data));
} }

View File

@@ -3,8 +3,8 @@
namespace MailPoet\Services; namespace MailPoet\Services;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Settings\SettingsController;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
if(!defined('ABSPATH')) exit; if(!defined('ABSPATH')) exit;
@@ -31,6 +31,13 @@ class Bridge {
public $api; public $api;
/** @var SettingsController */
private $settings;
function __construct() {
$this->settings = new SettingsController();
}
static function isMPSendingServiceEnabled() { static function isMPSendingServiceEnabled() {
try { try {
$mailer_config = Mailer::getMailerConfig(); $mailer_config = Mailer::getMailerConfig();
@@ -42,12 +49,14 @@ class Bridge {
} }
static function isMSSKeySpecified() { static function isMSSKeySpecified() {
$key = Setting::getValue(self::API_KEY_SETTING_NAME); $settings = new SettingsController();
$key = $settings->get(self::API_KEY_SETTING_NAME);
return !empty($key); return !empty($key);
} }
static function isPremiumKeySpecified() { static function isPremiumKeySpecified() {
$key = Setting::getValue(self::PREMIUM_KEY_SETTING_NAME); $settings = new SettingsController();
$key = $settings->get(self::PREMIUM_KEY_SETTING_NAME);
return !empty($key); return !empty($key);
} }
@@ -83,13 +92,13 @@ class Bridge {
} }
// store the key itself // store the key itself
Setting::setValue( $this->settings->set(
self::API_KEY_SETTING_NAME, self::API_KEY_SETTING_NAME,
$key $key
); );
// store the key state // store the key state
Setting::setValue( $this->settings->set(
self::API_KEY_STATE_SETTING_NAME, self::API_KEY_STATE_SETTING_NAME,
$state $state
); );
@@ -135,13 +144,13 @@ class Bridge {
} }
// store the key itself // store the key itself
Setting::setValue( $this->settings->set(
self::PREMIUM_KEY_SETTING_NAME, self::PREMIUM_KEY_SETTING_NAME,
$key $key
); );
// store the key state // store the key state
Setting::setValue( $this->settings->set(
self::PREMIUM_KEY_STATE_SETTING_NAME, self::PREMIUM_KEY_STATE_SETTING_NAME,
$state $state
); );
@@ -168,7 +177,8 @@ class Bridge {
} }
static function invalidateKey() { static function invalidateKey() {
Setting::setValue( $settings = new SettingsController();
$settings->set(
self::API_KEY_STATE_SETTING_NAME, self::API_KEY_STATE_SETTING_NAME,
array('state' => self::KEY_INVALID) array('state' => self::KEY_INVALID)
); );

View File

@@ -10,6 +10,7 @@ use MailPoet\Models\ScheduledTask;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Router\Endpoints\ViewInBrowser; use MailPoet\Router\Endpoints\ViewInBrowser;
use MailPoet\Settings\SettingsController;
use MailPoet\Tasks\Sending as SendingTask; use MailPoet\Tasks\Sending as SendingTask;
class ViewInBrowserTest extends \MailPoetTest { class ViewInBrowserTest extends \MailPoetTest {
@@ -40,7 +41,7 @@ class ViewInBrowserTest extends \MailPoetTest {
'preview' => false 'preview' => false
); );
// instantiate class // instantiate class
$this->view_in_browser = new ViewInBrowser(new AccessControl()); $this->view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController());
} }
function testItAbortsWhenBrowserPreviewDataIsMissing() { function testItAbortsWhenBrowserPreviewDataIsMissing() {
@@ -148,12 +149,12 @@ class ViewInBrowserTest extends \MailPoetTest {
$wp_user = wp_set_current_user(0); $wp_user = wp_set_current_user(0);
// when WP user does not have 'manage options' permission, false should be returned // when WP user does not have 'manage options' permission, false should be returned
$wp_user->remove_role('administrator'); $wp_user->remove_role('administrator');
$view_in_browser = new ViewInBrowser(new AccessControl()); $view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController());
expect($this->view_in_browser->_validateBrowserPreviewData($data))->false(); expect($view_in_browser->_validateBrowserPreviewData($data))->false();
// when WP has 'manage options' permission, data should be returned // when WP has 'manage options' permission, data should be returned
$wp_user->add_role('administrator'); $wp_user->add_role('administrator');
$view_in_browser = new ViewInBrowser(new AccessControl()); $view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController());
expect($view_in_browser->_validateBrowserPreviewData($data))->equals($data); expect($view_in_browser->_validateBrowserPreviewData($data))->equals($data);
} }
@@ -169,7 +170,7 @@ class ViewInBrowserTest extends \MailPoetTest {
); );
$data->preview = true; $data->preview = true;
wp_set_current_user(1); wp_set_current_user(1);
$view_in_browser = new ViewInBrowser(new AccessControl()); $view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController());
$result = $view_in_browser->_validateBrowserPreviewData($data); $result = $view_in_browser->_validateBrowserPreviewData($data);
expect($result->subscriber->id)->equals(1); expect($result->subscriber->id)->equals(1);
} }
@@ -202,7 +203,8 @@ class ViewInBrowserTest extends \MailPoetTest {
function testItReturnsViewActionResult() { function testItReturnsViewActionResult() {
$view_in_browser = Stub::make($this->view_in_browser, array( $view_in_browser = Stub::make($this->view_in_browser, array(
'_displayNewsletter' => Expected::exactly(1) '_displayNewsletter' => Expected::exactly(1),
'settings' => new SettingsController()
), $this); ), $this);
$view_in_browser->view($this->browser_preview_data); $view_in_browser->view($this->browser_preview_data);
} }

View File

@@ -8,11 +8,16 @@ use MailPoet\Models\Setting;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Services\Bridge\API; use MailPoet\Services\Bridge\API;
use MailPoet\Services\Bridge\BridgeTestMockAPI as MockAPI; use MailPoet\Services\Bridge\BridgeTestMockAPI as MockAPI;
use MailPoet\Settings\SettingsController;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
require_once('BridgeTestMockAPI.php'); require_once('BridgeTestMockAPI.php');
class BridgeTest extends \MailPoetTest { class BridgeTest extends \MailPoetTest {
/** @var SettingsController */
private $settings;
function _before() { function _before() {
parent::_before(); parent::_before();
$this->valid_key = 'abcdefghijklmnopqrstuvwxyz'; $this->valid_key = 'abcdefghijklmnopqrstuvwxyz';
@@ -28,6 +33,7 @@ class BridgeTest extends \MailPoetTest {
$this->bridge = new Bridge(); $this->bridge = new Bridge();
$this->bridge->api = new MockAPI('key'); $this->bridge->api = new MockAPI('key');
$this->settings = new SettingsController();
} }
function testItChecksIfCurrentSendingMethodIsMailpoet() { function testItChecksIfCurrentSendingMethodIsMailpoet() {
@@ -37,7 +43,7 @@ class BridgeTest extends \MailPoetTest {
} }
function testMPCheckReturnsFalseWhenMailerThrowsException() { function testMPCheckReturnsFalseWhenMailerThrowsException() {
Setting::setValue(Mailer::MAILER_CONFIG_SETTING_NAME, ''); $this->settings->set(Mailer::MAILER_CONFIG_SETTING_NAME, '');
expect(Bridge::isMPSendingServiceEnabled())->false(); expect(Bridge::isMPSendingServiceEnabled())->false();
} }
@@ -200,7 +206,7 @@ class BridgeTest extends \MailPoetTest {
} }
function testItInvalidatesMSSKey() { function testItInvalidatesMSSKey() {
Setting::setValue( $this->settings->set(
Bridge::API_KEY_STATE_SETTING_NAME, Bridge::API_KEY_STATE_SETTING_NAME,
array('state' => Bridge::KEY_VALID) array('state' => Bridge::KEY_VALID)
); );
@@ -281,7 +287,7 @@ class BridgeTest extends \MailPoetTest {
} }
private function setMailPoetSendingMethod() { private function setMailPoetSendingMethod() {
Setting::setValue( $this->settings->set(
Mailer::MAILER_CONFIG_SETTING_NAME, Mailer::MAILER_CONFIG_SETTING_NAME,
array( array(
'method' => 'MailPoet', 'method' => 'MailPoet',
@@ -291,26 +297,26 @@ class BridgeTest extends \MailPoetTest {
} }
private function getMSSKey() { private function getMSSKey() {
return Setting::getValue(Bridge::API_KEY_SETTING_NAME); return $this->settings->get(Bridge::API_KEY_SETTING_NAME);
} }
private function getMSSKeyState() { private function getMSSKeyState() {
return Setting::getValue(Bridge::API_KEY_STATE_SETTING_NAME); return $this->settings->get(Bridge::API_KEY_STATE_SETTING_NAME);
} }
private function fillPremiumKey() { private function fillPremiumKey() {
Setting::setValue( $this->settings->set(
Bridge::PREMIUM_KEY_SETTING_NAME, Bridge::PREMIUM_KEY_SETTING_NAME,
'123457890abcdef' '123457890abcdef'
); );
} }
private function getPremiumKey() { private function getPremiumKey() {
return Setting::getValue(Bridge::PREMIUM_KEY_SETTING_NAME); return $this->settings->get(Bridge::PREMIUM_KEY_SETTING_NAME);
} }
private function getPremiumKeyState() { private function getPremiumKeyState() {
return Setting::getValue(Bridge::PREMIUM_KEY_STATE_SETTING_NAME); return $this->settings->get(Bridge::PREMIUM_KEY_STATE_SETTING_NAME);
} }
function _after() { function _after() {