- Fixes mailer error message not being displayed when newsletter preview

sending fails
This commit is contained in:
Vlad
2017-01-04 13:04:53 -05:00
parent f5dce907ff
commit 3a1568a31d
2 changed files with 112 additions and 79 deletions

View File

@ -284,7 +284,7 @@ class Newsletters extends APIEndpoint {
if($result['response'] === false) {
$error = sprintf(
__('The email could not be sent: %s', 'mailpoet'),
$result['error']
$result['error_message']
);
return $this->errorResponse(array(APIError::BAD_REQUEST => $error));
} else {

View File

@ -1,12 +1,12 @@
<?php
use Codeception\Util\Fixtures;
use Codeception\Util\Stub;
use \MailPoet\API\Response as APIResponse;
use \MailPoet\API\Endpoints\Newsletters;
use \MailPoet\Models\Newsletter;
use MailPoet\API\Endpoints\Newsletters;
use MailPoet\API\Response as APIResponse;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterOptionField;
use \MailPoet\Models\NewsletterSegment;
use \MailPoet\Models\Segment;
use MailPoet\Models\NewsletterSegment;
use MailPoet\Models\Segment;
use MailPoet\Newsletter\Scheduler\Scheduler;
class NewslettersTest extends MailPoetTest {
@ -63,7 +63,8 @@ class NewslettersTest extends MailPoetTest {
$router = new Newsletters();
$response = $router->save($valid_data);
$saved_newsletter = Newsletter::filter('filterWithOptions')->findOne($response->data['id']);
$saved_newsletter = Newsletter::filter('filterWithOptions')
->findOne($response->data['id']);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals($saved_newsletter->asArray());
// newsletter option should be saved
@ -131,7 +132,8 @@ class NewslettersTest extends MailPoetTest {
// schedule should be recalculated when options change
$newsletter_data['options']['intervalType'] = Scheduler::INTERVAL_IMMEDIATELY;
$response = $router->save($newsletter_data);
$saved_newsletter = Newsletter::filter('filterWithOptions')->findOne($response->data['id']);
$saved_newsletter = Newsletter::filter('filterWithOptions')
->findOne($response->data['id']);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($saved_newsletter->schedule)->equals('* * * * *');
}
@ -144,14 +146,18 @@ class NewslettersTest extends MailPoetTest {
$newsletter_data = array(
'id' => $this->newsletter->id,
'subject' => 'My Updated Newsletter',
'segments' => array($segment_1->asArray(), $fake_segment_id)
'segments' => array(
$segment_1->asArray(),
$fake_segment_id
)
);
$response = $router->save($newsletter_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
$updated_newsletter =
Newsletter::findOne($this->newsletter->id)->withSegments();
Newsletter::findOne($this->newsletter->id)
->withSegments();
expect(count($updated_newsletter->segments))->equals(1);
expect($updated_newsletter->segments[0]['name'])->equals('Segment 1');
@ -202,7 +208,8 @@ class NewslettersTest extends MailPoetTest {
$response = $router->restore(array('id' => $this->newsletter->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::findOne($this->newsletter->id)->asArray()
Newsletter::findOne($this->newsletter->id)
->asArray()
);
expect($response->data['deleted_at'])->null();
expect($response->meta['count'])->equals(1);
@ -213,7 +220,8 @@ class NewslettersTest extends MailPoetTest {
$response = $router->trash(array('id' => $this->newsletter->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::findOne($this->newsletter->id)->asArray()
Newsletter::findOne($this->newsletter->id)
->asArray()
);
expect($response->data['deleted_at'])->notNull();
expect($response->meta['count'])->equals(1);
@ -471,6 +479,31 @@ class NewslettersTest extends MailPoetTest {
expect($response->status)->equals(APIResponse::STATUS_OK);
}
function testItReturnsMaillerErrorWhenSendingFailed() {
$subscriber = 'test@subscriber.com';
$data = array(
'subscriber' => $subscriber,
'id' => $this->newsletter->id,
'mailer' => Stub::makeEmpty(
'\MailPoet\Mailer\Mailer',
array(
'send' => function($newsletter, $subscriber) {
expect(is_array($newsletter))->true();
expect($newsletter['body']['text'])->contains('Hello test');
expect($subscriber)->equals($subscriber);
return array(
'response' => false,
'error_message' => 'failed'
);
}
)
)
);
$router = new Newsletters();
$response = $router->sendPreview($data);
expect($response->errors[0]['message'])->equals('The email could not be sent: failed');
}
function _after() {
Newsletter::deleteMany();
NewsletterSegment::deleteMany();