Refactor MailPoet\Router, Services to use new settings
[MAILPOET-1757]
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
);
|
);
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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() {
|
||||||
|
Reference in New Issue
Block a user