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,15 +34,16 @@ class MailPoetMapper {
case API::RESPONSE_CODE_PAYLOAD_ERROR:
$result_parsed = json_decode($result['message'], true);
$message = __('Error while sending.', 'mailpoet');
if(is_array($result_parsed)) {
if(!is_array($result_parsed)) {
$message .= ' ' . $result['message'];
break;
}
try {
$subscribers_errors = $this->getSubscribersErrors($result_parsed, $subscribers);
$level = MailerError::LEVEL_SOFT;
} catch (InvalidArgumentException $e) {
$message .= ' ' . $e->getMessage();
}
} else {
$message .= ' ' . $result['message'];
}
break;
case API::RESPONSE_CODE_TEMPORARY_UNAVAILABLE:
$message = __('Email service is temporarily not available, please try again in a few minutes.', 'mailpoet');

View File

@ -74,7 +74,7 @@ class MailPoetMapperTest extends \MailPoetTest {
$error = $this->mapper->getErrorForResult($api_result, $this->subscribers);
expect($error)->isInstanceOf(MailerError::class);
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();
expect(count($subscriber_errors))->equals(2);
expect($subscriber_errors[0]->getEmail())->equals('a@example.com');