added API/Error class to hold error keys as constants

- re-added Setting::getAll() to API/Setting::set() in response
- updated settings/setup tests
This commit is contained in:
Jonathan Labreuille
2016-08-03 15:04:25 +02:00
parent 6675d5a20d
commit 5d2800bc25
6 changed files with 31 additions and 16 deletions

View File

@ -17,7 +17,7 @@ abstract class Endpoint {
) {
if(empty($errors)) {
$errors = array(
'unknown' => __('An unknown error occurred.')
Error::UNKNOWN => __('An unknown error occurred.')
);
}
return new ErrorResponse($errors, $meta, $status);
@ -26,7 +26,7 @@ abstract class Endpoint {
function badRequest($errors = array(), $meta = array()) {
if(empty($errors)) {
$errors = array(
'bad_request' => __('Invalid request parameters.')
Error::BAD_REQUEST => __('Invalid request parameters.')
);
}
return new ErrorResponse($errors, $meta, Response::STATUS_BAD_REQUEST);

View File

@ -1,6 +1,7 @@
<?php
namespace MailPoet\API\Endpoints;
use \MailPoet\API\Endpoint as APIEndpoint;
use \MailPoet\API\Error as APIError;
use \MailPoet\Models\Setting;
if(!defined('ABSPATH')) exit;
@ -10,18 +11,20 @@ class Settings extends APIEndpoint {
}
function get() {
$settings = Setting::getAll();
return $this->successResponse($settings);
return $this->successResponse(Setting::getAll());
}
function set($settings = array()) {
if(empty($settings)) {
return $this->badRequest();
return $this->badRequest(array(
APIError::BAD_REQUEST =>
__("You have not specified any settings to be saved.")
));
} else {
foreach($settings as $name => $value) {
Setting::setValue($name, $value);
}
return $this->successResponse();
return $this->successResponse(Setting::getAll());
}
}
}

View File

@ -17,7 +17,7 @@ class Setup extends APIEndpoint {
return $this->successResponse();
} catch(\Exception $e) {
return $this->errorResponse(array(
$e->getMessage()
$e->getCode() => $e->getMessage()
));
}
}

11
lib/API/Error.php Normal file
View File

@ -0,0 +1,11 @@
<?php
namespace MailPoet\API;
if(!defined('ABSPATH')) exit;
final class Error {
const UNKNOWN = 'unknown';
const BAD_REQUEST = 'bad_request';
private function __construct() {}
}

View File

@ -1,5 +1,6 @@
<?php
use \MailPoet\API\Response;
use \MailPoet\API\Response as APIResponse;
use \MailPoet\API\Error as APIError;
use \MailPoet\API\Endpoints\Settings;
use \MailPoet\Models\Setting;
@ -12,14 +13,14 @@ class SettingsTest extends MailPoetTest {
$router = new Settings();
$response = $router->get();
expect($response->status)->equals(Response::STATUS_OK);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->notEmpty();
expect($response->data['some']['setting']['key'])->true();
Setting::deleteMany();
$response = $router->get();
expect($response->status)->equals(Response::STATUS_OK);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(Setting::getDefaults());
}
@ -36,14 +37,14 @@ class SettingsTest extends MailPoetTest {
$router = new Settings();
$response = $router->set(/* missing data */);
expect($response->errors[0]['error'])->equals('bad_request');
expect($response->status)->equals(Response::STATUS_BAD_REQUEST);
expect($response->errors[0]['error'])->equals(APIError::BAD_REQUEST);
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
$response = $router->set($new_settings);
expect($response->status)->equals(Response::STATUS_OK);
expect($response->status)->equals(APIResponse::STATUS_OK);
$response = $router->get();
expect($response->status)->equals(Response::STATUS_OK);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data['some']['setting'])->hasntKey('key');
expect($response->data['some']['setting']['new_key'])->true();
expect($response->data['some']['new_setting'])->true();

View File

@ -1,5 +1,5 @@
<?php
use \MailPoet\API\Response;
use \MailPoet\API\Response as APIResponse;
use \MailPoet\API\Endpoints\Setup;
use \MailPoet\Models\Setting;
@ -11,7 +11,7 @@ class SetupTest extends MailPoetTest {
function testItCanReinstall() {
$router = new Setup();
$response = $router->reset();
expect($response->status)->equals(Response::STATUS_OK);
expect($response->status)->equals(APIResponse::STATUS_OK);
$signup_confirmation = Setting::getValue('signup_confirmation.enabled');
expect($signup_confirmation)->true();