Add WooCommerceSettings endpoint
[MAILPOET-2278]
This commit is contained in:
committed by
Jack Kitterhing
parent
af902e93f4
commit
86cffacdbe
33
lib/API/JSON/v1/WoocommerceSettings.php
Normal file
33
lib/API/JSON/v1/WoocommerceSettings.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\API\JSON\v1;
|
||||
|
||||
use MailPoet\API\JSON\Endpoint as APIEndpoint;
|
||||
use MailPoet\Config\AccessControl;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class WoocommerceSettings extends APIEndpoint {
|
||||
public $permissions = [
|
||||
'global' => AccessControl::PERMISSION_MANAGE_EMAILS,
|
||||
];
|
||||
|
||||
private $allowed_settings = [
|
||||
'woocommerce_email_base_color',
|
||||
];
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
function __construct(WPFunctions $wp) {
|
||||
$this->wp = $wp;
|
||||
}
|
||||
|
||||
function set($data = []) {
|
||||
foreach ($data as $option => $value) {
|
||||
if (in_array($option, $this->allowed_settings)) {
|
||||
$this->wp->updateOption($option, $value);
|
||||
}
|
||||
}
|
||||
return $this->successResponse([]);
|
||||
}
|
||||
}
|
@ -84,6 +84,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\API\JSON\v1\SendingTaskSubscribers::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\Setup::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\Subscribers::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\WoocommerceSettings::class)->setPublic(true);
|
||||
// API response builders
|
||||
$container->autowire(\MailPoet\API\JSON\ResponseBuilders\NewslettersResponseBuilder::class);
|
||||
// Config
|
||||
|
37
tests/integration/API/JSON/v1/WoocommerceSettingsTest.php
Normal file
37
tests/integration/API/JSON/v1/WoocommerceSettingsTest.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Test\API\JSON\v1;
|
||||
|
||||
use MailPoet\API\JSON\Response as APIResponse;
|
||||
use MailPoet\API\JSON\v1\WoocommerceSettings;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class WoocommerceSettingsTest extends \MailPoetTest {
|
||||
|
||||
/** @var WoocommerceSettings */
|
||||
private $endpoint;
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
function _before() {
|
||||
$this->wp = new WPFunctions();
|
||||
$this->endpoint = new WoocommerceSettings($this->wp);
|
||||
}
|
||||
function testItCanSetSettings() {
|
||||
$this->wp->updateOption('woocommerce_email_base_color', '#ffffff');
|
||||
$response = $this->endpoint->set([
|
||||
'woocommerce_email_base_color' => '#aaaaaa',
|
||||
]);
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
expect($this->wp->getOption('woocommerce_email_base_color'))->equals('#aaaaaa');
|
||||
}
|
||||
|
||||
function testItDoesNotSetUnallowedSettings() {
|
||||
$response = $this->endpoint->set([
|
||||
'mailpoet_some_none_exting_option' => 'some value',
|
||||
]);
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
expect($this->wp->getOption('mailpoet_some_none_exting_option', null))->equals(null);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user