Add soft level errors distinction for MailPoet service

[MAILPOET-1154]
This commit is contained in:
Rostislav Wolny
2018-09-11 09:42:14 +02:00
parent 223c2e1562
commit db3ddd22f1
2 changed files with 9 additions and 8 deletions

View File

@ -34,14 +34,15 @@ class MailPoetMapper {
case API::RESPONSE_CODE_PAYLOAD_ERROR: case API::RESPONSE_CODE_PAYLOAD_ERROR:
$result_parsed = json_decode($result['message'], true); $result_parsed = json_decode($result['message'], true);
$message = __('Error while sending.', 'mailpoet'); $message = __('Error while sending.', 'mailpoet');
if(is_array($result_parsed)) { if(!is_array($result_parsed)) {
try {
$subscribers_errors = $this->getSubscribersErrors($result_parsed, $subscribers);
} catch (InvalidArgumentException $e) {
$message .= ' ' . $e->getMessage();
}
} else {
$message .= ' ' . $result['message']; $message .= ' ' . $result['message'];
break;
}
try {
$subscribers_errors = $this->getSubscribersErrors($result_parsed, $subscribers);
$level = MailerError::LEVEL_SOFT;
} catch (InvalidArgumentException $e) {
$message .= ' ' . $e->getMessage();
} }
break; break;
case API::RESPONSE_CODE_TEMPORARY_UNAVAILABLE: case API::RESPONSE_CODE_TEMPORARY_UNAVAILABLE:

View File

@ -74,7 +74,7 @@ class MailPoetMapperTest extends \MailPoetTest {
$error = $this->mapper->getErrorForResult($api_result, $this->subscribers); $error = $this->mapper->getErrorForResult($api_result, $this->subscribers);
expect($error)->isInstanceOf(MailerError::class); expect($error)->isInstanceOf(MailerError::class);
expect($error->getOperation())->equals(MailerError::OPERATION_SEND); expect($error->getOperation())->equals(MailerError::OPERATION_SEND);
expect($error->getLevel())->equals(MailerError::LEVEL_HARD); expect($error->getLevel())->equals(MailerError::LEVEL_SOFT);
$subscriber_errors = $error->getSubscriberErrors(); $subscriber_errors = $error->getSubscriberErrors();
expect(count($subscriber_errors))->equals(2); expect(count($subscriber_errors))->equals(2);
expect($subscriber_errors[0]->getEmail())->equals('a@example.com'); expect($subscriber_errors[0]->getEmail())->equals('a@example.com');