Inject bulk action controller using DI

[MAILPOET-1689]
This commit is contained in:
Rostislav Wolny
2018-12-12 17:15:53 +01:00
parent 2839c86017
commit fd4bcee5f5
9 changed files with 181 additions and 221 deletions

View File

@ -14,10 +14,18 @@ use MailPoet\Models\StatisticsForms;
if(!defined('ABSPATH')) exit;
class Forms extends APIEndpoint {
/** @var Listing\BulkActionController */
private $bulk_action;
public $permissions = array(
'global' => AccessControl::PERMISSION_MANAGE_FORMS
);
function __construct(Listing\BulkActionController $bulk_action) {
$this->bulk_action = $bulk_action;
}
function get($data = array()) {
$id = (isset($data['id']) ? (int)$data['id'] : false);
$form = Form::findOne($id);
@ -280,8 +288,7 @@ class Forms extends APIEndpoint {
function bulkAction($data = array()) {
try {
$bulk_action = new Listing\BulkActionController();
$meta = $bulk_action->apply('\MailPoet\Models\Form', $data);
$meta = $this->bulk_action->apply('\MailPoet\Models\Form', $data);
return $this->successResponse(null, $meta);
} catch(\Exception $e) {
return $this->errorResponse(array(

View File

@ -26,10 +26,18 @@ use MailPoet\WP\Functions as WPFunctions;
if(!defined('ABSPATH')) exit;
class Newsletters extends APIEndpoint {
/** @var Listing\BulkActionController */
private $bulk_action;
public $permissions = array(
'global' => AccessControl::PERMISSION_MANAGE_EMAILS
);
function __construct(Listing\BulkActionController $bulk_action) {
$this->bulk_action = $bulk_action;
}
function get($data = array()) {
$id = (isset($data['id']) ? (int)$data['id'] : false);
$newsletter = Newsletter::findOne($id);
@ -438,8 +446,7 @@ class Newsletters extends APIEndpoint {
function bulkAction($data = array()) {
try {
$bulk_action = new Listing\BulkActionController();
$meta = $bulk_action->apply('\MailPoet\Models\Newsletter', $data);
$meta = $this->bulk_action->apply('\MailPoet\Models\Newsletter', $data);
return $this->successResponse(null, $meta);
} catch(\Exception $e) {
return $this->errorResponse(array(

View File

@ -16,6 +16,13 @@ class Segments extends APIEndpoint {
'global' => AccessControl::PERMISSION_MANAGE_SEGMENTS
);
/** @var Listing\BulkActionController */
private $bulk_action;
function __construct(Listing\BulkActionController $bulk_action) {
$this->bulk_action = $bulk_action;
}
function get($data = array()) {
$id = (isset($data['id']) ? (int)$data['id'] : false);
$segment = Segment::findOne($id);
@ -152,8 +159,7 @@ class Segments extends APIEndpoint {
function bulkAction($data = array()) {
try {
$bulk_action = new Listing\BulkActionController();
$meta = $bulk_action->apply('\MailPoet\Models\Segment', $data);
$meta = $this->bulk_action->apply('\MailPoet\Models\Segment', $data);
return $this->successResponse(null, $meta);
} catch(\Exception $e) {
return $this->errorResponse(array(

View File

@ -29,6 +29,13 @@ class Subscribers extends APIEndpoint {
'methods' => array('subscribe' => AccessControl::NO_ACCESS_RESTRICTION)
);
/** @var Listing\BulkActionController */
private $bulk_action_controller;
public function __construct(Listing\BulkActionController $bulk_action_controller) {
$this->bulk_action_controller = $bulk_action_controller;
}
function get($data = array()) {
$id = (isset($data['id']) ? (int)$data['id'] : false);
$subscriber = Subscriber::findOne($id);
@ -262,10 +269,9 @@ class Subscribers extends APIEndpoint {
function bulkAction($data = array()) {
try {
if(!isset($data['listing']['filter']['segment'])) {
$bulk_action = new Listing\BulkActionController();
return $this->successResponse(
null,
$bulk_action->apply('\MailPoet\Models\Subscriber', $data)
$this->bulk_action_controller->apply('\MailPoet\Models\Subscriber', $data)
);
} else {
$bulk_action = new BulkAction($data);

View File

@ -57,6 +57,8 @@ class ContainerConfigurator implements IContainerConfigurator {
// Cron
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
// Listing
$container->autowire(\MailPoet\Listing\BulkActionController::class)->setPublic(true);
// Router
$container->autowire(\MailPoet\Router\Endpoints\CronDaemon::class)->setPublic(true);
$container->autowire(\MailPoet\Router\Endpoints\Subscription::class)->setPublic(true);

View File

@ -3,11 +3,17 @@ namespace MailPoet\Test\API\JSON\v1;
use MailPoet\API\JSON\v1\Forms;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\Form;
use MailPoet\Models\Segment;
class FormsTest extends \MailPoetTest {
/** @var Forms */
private $endpoint;
function _before() {
$this->endpoint = ContainerWrapper::getInstance()->get(Forms::class);
$this->form_1 = Form::createOrUpdate(array('name' => 'Form 1'));
$this->form_2 = Form::createOrUpdate(array('name' => 'Form 2'));
$this->form_3 = Form::createOrUpdate(array('name' => 'Form 3'));
@ -16,17 +22,15 @@ class FormsTest extends \MailPoetTest {
}
function testItCanGetAForm() {
$router = new Forms();
$response = $router->get(/* missing id */);
$response = $this->endpoint->get(/* missing id */);
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])->equals('This form does not exist.');
$response = $router->get(array('id' => 'not_an_id'));
$response = $this->endpoint->get(array('id' => 'not_an_id'));
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])->equals('This form does not exist.');
$response = $router->get(array('id' => $this->form_1->id));
$response = $this->endpoint->get(array('id' => $this->form_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Form::findOne($this->form_1->id)->asArray()
@ -34,8 +38,7 @@ class FormsTest extends \MailPoetTest {
}
function testItCanGetListingData() {
$router = new Forms();
$response = $router->listing();
$response = $this->endpoint->listing();
expect($response->status)->equals(APIResponse::STATUS_OK);
@ -50,8 +53,7 @@ class FormsTest extends \MailPoetTest {
}
function testItCanCreateANewForm() {
$router = new Forms();
$response = $router->create();
$response = $this->endpoint->create();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Form::findOne($response->data['id'])->asArray()
@ -64,12 +66,11 @@ class FormsTest extends \MailPoetTest {
'name' => 'My first form'
);
$router = new Forms();
$response = $router->save(/* missing data */);
$response = $this->endpoint->save(/* missing data */);
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message'])->equals('Please specify a name.');
$response = $router->save($form_data);
$response = $this->endpoint->save($form_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Form::where('name', 'My first form')->findOne()->asArray()
@ -77,27 +78,23 @@ class FormsTest extends \MailPoetTest {
}
function testItCanPreviewAForm() {
$router = new Forms();
$response = $router->create();
$response = $this->endpoint->create();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Form::where('name', 'New form')->findOne()->asArray()
);
$response = $router->previewEditor($response->data);
$response = $this->endpoint->previewEditor($response->data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data['html'])->notEmpty();
expect($response->data['css'])->notEmpty();
}
function testItCanExportAForm() {
$router = new Forms();
$response = $router->create();
$response = $this->endpoint->create();
expect($response->status)->equals(APIResponse::STATUS_OK);
$response = $router->exportsEditor($response->data);
$response = $this->endpoint->exportsEditor($response->data);
expect($response->data['html'])->notEmpty();
expect($response->data['php'])->notEmpty();
expect($response->data['iframe'])->notEmpty();
@ -105,15 +102,13 @@ class FormsTest extends \MailPoetTest {
}
function testItCanSaveFormEditor() {
$router = new Forms();
$response = $router->create();
$response = $this->endpoint->create();
expect($response->status)->equals(APIResponse::STATUS_OK);
$form = Form::findOne($response->data['id'])->asArray();
$form['name'] = 'Updated form';
$response = $router->saveEditor($form);
$response = $this->endpoint->saveEditor($form);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['is_widget'])->false();
expect($response->data['name'])->equals('Updated form');
@ -125,8 +120,7 @@ class FormsTest extends \MailPoetTest {
$trashed_form = Form::findOne($this->form_1->id);
expect($trashed_form->deleted_at)->notNull();
$router = new Forms();
$response = $router->restore(array('id' => $this->form_1->id));
$response = $this->endpoint->restore(array('id' => $this->form_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Form::findOne($this->form_1->id)->asArray()
@ -136,8 +130,7 @@ class FormsTest extends \MailPoetTest {
}
function testItCanTrashAForm() {
$router = new Forms();
$response = $router->trash(array('id' => $this->form_2->id));
$response = $this->endpoint->trash(array('id' => $this->form_2->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Form::findOne($this->form_2->id)->asArray()
@ -147,16 +140,14 @@ class FormsTest extends \MailPoetTest {
}
function testItCanDeleteAForm() {
$router = new Forms();
$response = $router->delete(array('id' => $this->form_3->id));
$response = $this->endpoint->delete(array('id' => $this->form_3->id));
expect($response->data)->isEmpty();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(1);
}
function testItCanDuplicateAForm() {
$router = new Forms();
$response = $router->duplicate(array('id' => $this->form_1->id));
$response = $this->endpoint->duplicate(array('id' => $this->form_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Form::where('name', 'Copy of Form 1')->findOne()->asArray()
@ -165,23 +156,21 @@ class FormsTest extends \MailPoetTest {
}
function testItCanBulkDeleteForms() {
$router = new Forms();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'trash',
'listing' => array('group' => 'all')
));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(3);
$router = new Forms();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(3);
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));

View File

@ -8,6 +8,7 @@ use Codeception\Util\Stub;
use Helper\WordPressHooks as WPHooksHelper;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\API\JSON\v1\Newsletters;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterOption;
use MailPoet\Models\NewsletterOptionField;
@ -23,7 +24,11 @@ use MailPoet\Subscription\Url as SubscriptionUrl;
use MailPoet\Tasks\Sending as SendingTask;
class NewslettersTest extends \MailPoetTest {
/** @var Newsletters */
private $endpoint;
function _before() {
$this->endpoint = ContainerWrapper::getInstance()->get(Newsletters::class);
$this->newsletter = Newsletter::createOrUpdate(
array(
'subject' => 'My Standard Newsletter',
@ -40,8 +45,6 @@ class NewslettersTest extends \MailPoetTest {
}
function testItKeepsUnsentNewslettersAtTheTopWhenSortingBySentAtDate() {
$router = new Newsletters();
$sent_newsletters = array();
for($i = 1; $i <= 3; $i++) {
$sent_newsletters[$i] = Newsletter::create();
@ -52,7 +55,7 @@ class NewslettersTest extends \MailPoetTest {
};
// sorting by ASC order retains unsent newsletters at the top
$response = $router->listing(
$response = $this->endpoint->listing(
array(
'params' => array(
'type' => 'standard'
@ -68,7 +71,7 @@ class NewslettersTest extends \MailPoetTest {
expect($response->data[3]['id'])->equals($sent_newsletters[3]->id);
// sorting by DESC order retains unsent newsletters at the top
$response = $router->listing(
$response = $this->endpoint->listing(
array(
'params' => array(
'type' => 'standard'
@ -85,21 +88,19 @@ class NewslettersTest extends \MailPoetTest {
}
function testItCanGetANewsletter() {
$router = new Newsletters();
$response = $router->get(); // missing id
$response = $this->endpoint->get(); // missing id
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])
->equals('This newsletter does not exist.');
$response = $router->get(array('id' => 'not_an_id'));
$response = $this->endpoint->get(array('id' => 'not_an_id'));
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])
->equals('This newsletter does not exist.');
WPHooksHelper::interceptApplyFilters();
$response = $router->get(array('id' => $this->newsletter->id));
$response = $this->endpoint->get(array('id' => $this->newsletter->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::findOne($this->newsletter->id)
@ -130,8 +131,8 @@ class NewslettersTest extends \MailPoetTest {
WPHooksHelper::interceptApplyFilters();
WPHooksHelper::interceptDoAction();
$router = new Newsletters();
$response = $router->save($valid_data);
$response = $this->endpoint->save($valid_data);
$saved_newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_STANDARD)
->findOne($response->data['id']);
expect($response->status)->equals(APIResponse::STATUS_OK);
@ -150,19 +151,18 @@ class NewslettersTest extends \MailPoetTest {
'subject' => 'Missing newsletter type'
);
$response = $router->save($invalid_data);
$response = $this->endpoint->save($invalid_data);
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message'])->equals('Please specify a type.');
}
function testItCanSaveAnExistingNewsletter() {
$router = new Newsletters();
$newsletter_data = array(
'id' => $this->newsletter->id,
'subject' => 'My Updated Newsletter'
);
$response = $router->save($newsletter_data);
$response = $this->endpoint->save($newsletter_data);
$updated_newsletter = Newsletter::findOne($this->newsletter->id);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals($updated_newsletter->asArray());
@ -178,14 +178,13 @@ class NewslettersTest extends \MailPoetTest {
$sending_queue->save();
expect($sending_queue->getErrors())->false();
$router = new Newsletters();
$newsletter_data = array(
'id' => $this->post_notification->id,
'subject' => 'My Updated Newsletter',
'body' => Fixtures::get('newsletter_body_template'),
);
$response = $router->save($newsletter_data);
$response = $this->endpoint->save($newsletter_data);
$updated_queue = SendingQueue::where('newsletter_id', $this->post_notification->id)
->findOne()
->asArray();
@ -204,14 +203,13 @@ class NewslettersTest extends \MailPoetTest {
$sending_queue->save();
expect($sending_queue->getErrors())->false();
$router = new Newsletters();
$newsletter_data = array(
'id' => $this->newsletter->id,
'subject' => 'My Updated Newsletter',
'body' => Fixtures::get('newsletter_body_template'),
);
$response = $router->save($newsletter_data);
$response = $this->endpoint->save($newsletter_data);
$updated_queue = SendingQueue::where('newsletter_id', $this->newsletter->id)
->findOne()
->asArray();
@ -238,7 +236,6 @@ class NewslettersTest extends \MailPoetTest {
$newsletter_option_field->save();
}
$router = new Newsletters();
$newsletter_data = array(
'id' => $this->newsletter->id,
'type' => Newsletter::TYPE_NOTIFICATION,
@ -252,7 +249,7 @@ class NewslettersTest extends \MailPoetTest {
'schedule' => '0 14 * * 1'
)
);
$response = $router->save($newsletter_data);
$response = $this->endpoint->save($newsletter_data);
$saved_newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
->findOne($response->data['id']);
expect($response->status)->equals(APIResponse::STATUS_OK);
@ -260,7 +257,7 @@ class NewslettersTest extends \MailPoetTest {
// schedule should be recalculated when options change
$newsletter_data['options']['intervalType'] = Scheduler::INTERVAL_IMMEDIATELY;
$response = $router->save($newsletter_data);
$response = $this->endpoint->save($newsletter_data);
$saved_newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
->findOne($response->data['id']);
expect($response->status)->equals(APIResponse::STATUS_OK);
@ -297,7 +294,6 @@ class NewslettersTest extends \MailPoetTest {
$sending_queue_2->save();
// save newsletter via router
$router = new Newsletters();
$newsletter_data = array(
'id' => 1,
'type' => Newsletter::TYPE_NOTIFICATION,
@ -312,7 +308,7 @@ class NewslettersTest extends \MailPoetTest {
'schedule' => '0 7 * * 1'
)
);
$newsletter = $router->save($newsletter_data);
$newsletter = $this->endpoint->save($newsletter_data);
$sending_queue_1 = SendingTask::createFromQueue(SendingQueue::findOne($sending_queue_1->id));
$sending_queue_2 = SendingTask::createFromQueue(SendingQueue::findOne($sending_queue_2->id));
expect($sending_queue_1->scheduled_at)->notEquals($current_time);
@ -326,7 +322,6 @@ class NewslettersTest extends \MailPoetTest {
$segment_1 = Segment::createOrUpdate(array('name' => 'Segment 1'));
$fake_segment_id = 1;
$router = new Newsletters();
$newsletter_data = array(
'id' => $this->newsletter->id,
'subject' => 'My Updated Newsletter',
@ -336,7 +331,7 @@ class NewslettersTest extends \MailPoetTest {
)
);
$response = $router->save($newsletter_data);
$response = $this->endpoint->save($newsletter_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
$updated_newsletter =
@ -348,9 +343,8 @@ class NewslettersTest extends \MailPoetTest {
}
function testItCanSetANewsletterStatus() {
$router = new Newsletters();
// set status to sending
$response = $router->setStatus
$response = $this->endpoint->setStatus
(array(
'id' => $this->newsletter->id,
'status' => Newsletter::STATUS_SENDING
@ -360,7 +354,7 @@ class NewslettersTest extends \MailPoetTest {
expect($response->data['status'])->equals(Newsletter::STATUS_SENDING);
// set status to draft
$response = $router->setStatus(
$response = $this->endpoint->setStatus(
array(
'id' => $this->newsletter->id,
'status' => Newsletter::STATUS_DRAFT
@ -370,7 +364,7 @@ class NewslettersTest extends \MailPoetTest {
expect($response->data['status'])->equals(Newsletter::STATUS_DRAFT);
// no status specified throws an error
$response = $router->setStatus(
$response = $this->endpoint->setStatus(
array(
'id' => $this->newsletter->id,
)
@ -380,7 +374,7 @@ class NewslettersTest extends \MailPoetTest {
->equals('You need to specify a status.');
// invalid newsletter id throws an error
$response = $router->setStatus(
$response = $this->endpoint->setStatus(
array(
'status' => Newsletter::STATUS_DRAFT
)
@ -419,8 +413,7 @@ class NewslettersTest extends \MailPoetTest {
$sending_queue_3->scheduled_at = Scheduler::getPreviousRunDate($schedule);
$sending_queue_3->save();
$router = new Newsletters();
$router->setStatus(
$this->endpoint->setStatus(
array(
'id' => $this->post_notification->id,
'status' => Newsletter::STATUS_ACTIVE
@ -449,8 +442,7 @@ class NewslettersTest extends \MailPoetTest {
)
);
$router = new Newsletters();
$router->setStatus(
$this->endpoint->setStatus(
array(
'id' => $this->post_notification->id,
'status' => Newsletter::STATUS_ACTIVE
@ -466,8 +458,7 @@ class NewslettersTest extends \MailPoetTest {
$trashed_newsletter = Newsletter::findOne($this->newsletter->id);
expect($trashed_newsletter->deleted_at)->notNull();
$router = new Newsletters();
$response = $router->restore(array('id' => $this->newsletter->id));
$response = $this->endpoint->restore(array('id' => $this->newsletter->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::findOne($this->newsletter->id)
@ -478,8 +469,7 @@ class NewslettersTest extends \MailPoetTest {
}
function testItCanTrashANewsletter() {
$router = new Newsletters();
$response = $router->trash(array('id' => $this->newsletter->id));
$response = $this->endpoint->trash(array('id' => $this->newsletter->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::findOne($this->newsletter->id)
@ -490,8 +480,7 @@ class NewslettersTest extends \MailPoetTest {
}
function testItCanDeleteANewsletter() {
$router = new Newsletters();
$response = $router->delete(array('id' => $this->newsletter->id));
$response = $this->endpoint->delete(array('id' => $this->newsletter->id));
expect($response->data)->isEmpty();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(1);
@ -500,8 +489,7 @@ class NewslettersTest extends \MailPoetTest {
function testItCanDuplicateANewsletter() {
WPHooksHelper::interceptDoAction();
$router = new Newsletters();
$response = $router->duplicate(array('id' => $this->newsletter->id));
$response = $this->endpoint->duplicate(array('id' => $this->newsletter->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::where('subject', 'Copy of My Standard Newsletter')
@ -514,7 +502,7 @@ class NewslettersTest extends \MailPoetTest {
expect(WPHooksHelper::isActionDone($hook_name))->true();
expect(WPHooksHelper::getActionDone($hook_name)[0] instanceof Newsletter)->true();
$response = $router->duplicate(array('id' => $this->post_notification->id));
$response = $this->endpoint->duplicate(array('id' => $this->post_notification->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::where('subject', 'Copy of My Post Notification')
@ -529,8 +517,7 @@ class NewslettersTest extends \MailPoetTest {
'subject' => 'My New Newsletter',
'type' => Newsletter::TYPE_STANDARD
);
$router = new Newsletters();
$response = $router->create($data);
$response = $this->endpoint->create($data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Newsletter::where('subject', 'My New Newsletter')
@ -538,7 +525,7 @@ class NewslettersTest extends \MailPoetTest {
->asArray()
);
$response = $router->create();
$response = $this->endpoint->create();
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message'])->equals('Please specify a type.');
}
@ -574,8 +561,7 @@ class NewslettersTest extends \MailPoetTest {
);
$newsletter_segment->save();
$router = new Newsletters();
$response = $router->listing();
$response = $this->endpoint->listing();
expect($response->status)->equals(APIResponse::STATUS_OK);
@ -634,10 +620,8 @@ class NewslettersTest extends \MailPoetTest {
);
$newsletter_segment->save();
$router = new Newsletters();
// filter by 1st segment
$response = $router->listing(
$response = $this->endpoint->listing(
array(
'filter' => array(
'segment' => $segment_1->id
@ -652,7 +636,7 @@ class NewslettersTest extends \MailPoetTest {
expect($response->data[0]['subject'])->equals($this->newsletter->subject);
// filter by 2nd segment
$response = $router->listing(
$response = $this->endpoint->listing(
array(
'filter' => array(
'segment' => $segment_2->id
@ -667,9 +651,8 @@ class NewslettersTest extends \MailPoetTest {
}
function testItCanLimitListing() {
$router = new Newsletters();
// get 1st page (limit items per page to 1)
$response = $router->listing(
$response = $this->endpoint->listing(
array(
'limit' => 1,
'sort_by' => 'subject',
@ -686,7 +669,7 @@ class NewslettersTest extends \MailPoetTest {
);
// get 1st page (limit items per page to 1)
$response = $router->listing(
$response = $this->endpoint->listing(
array(
'limit' => 1,
'offset' => 1,
@ -708,8 +691,7 @@ class NewslettersTest extends \MailPoetTest {
$this->post_notification->id
);
$router = new Newsletters();
$response = $router->bulkAction(
$response = $this->endpoint->bulkAction(
array(
'listing' => array(
'selection' => $selection_ids
@ -723,8 +705,7 @@ class NewslettersTest extends \MailPoetTest {
}
function testItCanBulkDeleteNewsletters() {
$router = new Newsletters();
$response = $router->bulkAction(
$response = $this->endpoint->bulkAction(
array(
'action' => 'trash',
'listing' => array('group' => 'all')
@ -733,8 +714,7 @@ class NewslettersTest extends \MailPoetTest {
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(2);
$router = new Newsletters();
$response = $router->bulkAction(
$response = $this->endpoint->bulkAction(
array(
'action' => 'delete',
'listing' => array('group' => 'trash')
@ -743,7 +723,7 @@ class NewslettersTest extends \MailPoetTest {
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(2);
$response = $router->bulkAction(
$response = $this->endpoint->bulkAction(
array(
'action' => 'delete',
'listing' => array('group' => 'trash')
@ -780,8 +760,7 @@ class NewslettersTest extends \MailPoetTest {
)
)
);
$router = new Newsletters();
$response = $router->sendPreview($data);
$response = $this->endpoint->sendPreview($data);
expect($response->status)->equals(APIResponse::STATUS_OK);
}
@ -810,8 +789,7 @@ class NewslettersTest extends \MailPoetTest {
)
)
);
$router = new Newsletters();
$response = $router->sendPreview($data);
$response = $this->endpoint->sendPreview($data);
expect($response->errors[0]['message'])->equals('The email could not be sent: failed');
}
@ -820,15 +798,13 @@ class NewslettersTest extends \MailPoetTest {
'id' => $this->newsletter->id,
'body' => 'fake body'
);
$router = new Newsletters();
$response = $router->showPreview($data);
$response = $this->endpoint->showPreview($data);
expect($response->meta['preview_url'])->notContains('http');
expect($response->meta['preview_url'])->regExp('!^\/\/!');
}
function testItGeneratesPreviewLinksWithNewsletterHashAndNoSubscriberData() {
$router = new Newsletters();
$response = $router->listing();
$response = $this->endpoint->listing();
$preview_link = $response->data[0]['preview_url'];
parse_str(parse_url($preview_link, PHP_URL_QUERY), $preview_link_data);
$preview_link_data = Url::transformUrlDataObject(Router::decodeRequestData($preview_link_data['data']));
@ -862,8 +838,7 @@ class NewslettersTest extends \MailPoetTest {
)
);
$router = new Newsletters();
$response = $router->save($newsletter_data);
$this->endpoint->save($newsletter_data);
$newsletter = Newsletter::findOne($newsletter->id);
$sending_queue = SendingQueue::findOne($sending_queue->id);
expect($newsletter->status)->equals(Newsletter::STATUS_DRAFT);

View File

@ -3,29 +3,33 @@ namespace MailPoet\Test\API\JSON\v1;
use MailPoet\API\JSON\v1\Segments;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment;
class SegmentsTest extends \MailPoetTest {
/** @var Segments */
private $endpoint;
function _before() {
$this->endpoint = ContainerWrapper::getInstance()->get(Segments::class);
$this->segment_1 = Segment::createOrUpdate(array('name' => 'Segment 1', 'type' => 'default'));
$this->segment_2 = Segment::createOrUpdate(array('name' => 'Segment 2', 'type' => 'default'));
$this->segment_3 = Segment::createOrUpdate(array('name' => 'Segment 3', 'type' => 'default'));
}
function testItCanGetASegment() {
$router = new Segments();
$response = $router->get(/* missing id */);
$response = $this->endpoint->get(/* missing id */);
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])->equals('This list does not exist.');
$response = $router->get(array('id' => 'not_an_id'));
$response = $this->endpoint->get(array('id' => 'not_an_id'));
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])->equals('This list does not exist.');
$response = $router->get(array('id' => $this->segment_1->id));
$response = $this->endpoint->get(array('id' => $this->segment_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Segment::findOne($this->segment_1->id)->asArray()
@ -33,8 +37,7 @@ class SegmentsTest extends \MailPoetTest {
}
function testItCanGetListingData() {
$router = new Segments();
$response = $router->listing();
$response = $this->endpoint->listing();
expect($response->status)->equals(APIResponse::STATUS_OK);
@ -53,12 +56,11 @@ class SegmentsTest extends \MailPoetTest {
'name' => 'New Segment'
);
$router = new Segments();
$response = $router->save(/* missing data */);
$response = $this->endpoint->save(/* missing data */);
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message'])->equals('Please specify a name.');
$response = $router->save($segment_data);
$response = $this->endpoint->save($segment_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Segment::where('name', 'New Segment')->findOne()->asArray()
@ -70,8 +72,7 @@ class SegmentsTest extends \MailPoetTest {
'name' => 'Segment 1'
);
$router = new Segments();
$response = $router->save($duplicate_entry);
$response = $this->endpoint->save($duplicate_entry);
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message'])->equals(
'Another record already exists. Please specify a different "name".'
@ -84,8 +85,7 @@ class SegmentsTest extends \MailPoetTest {
$trashed_segment = Segment::findOne($this->segment_1->id);
expect($trashed_segment->deleted_at)->notNull();
$router = new Segments();
$response = $router->restore(array('id' => $this->segment_1->id));
$response = $this->endpoint->restore(array('id' => $this->segment_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Segment::findOne($this->segment_1->id)->asArray()
@ -95,8 +95,7 @@ class SegmentsTest extends \MailPoetTest {
}
function testItCanTrashASegment() {
$router = new Segments();
$response = $router->trash(array('id' => $this->segment_2->id));
$response = $this->endpoint->trash(array('id' => $this->segment_2->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Segment::findOne($this->segment_2->id)->asArray()
@ -106,16 +105,14 @@ class SegmentsTest extends \MailPoetTest {
}
function testItCanDeleteASegment() {
$router = new Segments();
$response = $router->delete(array('id' => $this->segment_3->id));
$response = $this->endpoint->delete(array('id' => $this->segment_3->id));
expect($response->data)->isEmpty();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(1);
}
function testItCanDuplicateASegment() {
$router = new Segments();
$response = $router->duplicate(array('id' => $this->segment_1->id));
$response = $this->endpoint->duplicate(array('id' => $this->segment_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Segment::where('name', 'Copy of Segment 1')->findOne()->asArray()
@ -130,16 +127,14 @@ class SegmentsTest extends \MailPoetTest {
'status' => Subscriber::STATUS_SUBSCRIBED
));
$router = new Segments();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'trash',
'listing' => array('group' => 'all')
));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(3);
$router = new Segments();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));
@ -147,7 +142,7 @@ class SegmentsTest extends \MailPoetTest {
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(3);
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));

View File

@ -5,6 +5,7 @@ use Carbon\Carbon;
use Codeception\Util\Fixtures;
use MailPoet\API\JSON\v1\Subscribers;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Form\Util\FieldNameObfuscator;
use MailPoet\Models\CustomField;
use MailPoet\Models\Form;
@ -20,9 +21,13 @@ use MailPoet\Models\SubscriberSegment;
use MailPoet\Subscribers\Source;
class SubscribersTest extends \MailPoetTest {
/** @var Subscribers */
private $endpoint;
function _before() {
$this->cleanup();
$this->endpoint = ContainerWrapper::getInstance()->get(Subscribers::class);
$obfuscator = new FieldNameObfuscator();
$this->obfuscatedEmail = $obfuscator->obfuscate('email');
$this->obfuscatedSegments = $obfuscator->obfuscate('segments');
@ -68,21 +73,19 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanGetASubscriber() {
$router = new Subscribers();
$response = $router->get(array('id' => 'not_an_id'));
$response = $this->endpoint->get(array('id' => 'not_an_id'));
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])->equals(
'This subscriber does not exist.'
);
$response = $router->get(/* missing argument */);
$response = $this->endpoint->get(/* missing argument */);
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
expect($response->errors[0]['message'])->equals(
'This subscriber does not exist.'
);
$response = $router->get(array('id' => $this->subscriber_1->id));
$response = $this->endpoint->get(array('id' => $this->subscriber_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Subscriber::findOne($this->subscriber_1->id)
@ -103,8 +106,7 @@ class SubscribersTest extends \MailPoetTest {
)
);
$router = new Subscribers();
$response = $router->save($valid_data);
$response = $this->endpoint->save($valid_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Subscriber::where('email', 'raul.doe@mailpoet.com')
@ -118,7 +120,7 @@ class SubscribersTest extends \MailPoetTest {
expect($subscriber_segments[0]->name)->equals($this->segment_1->name);
expect($subscriber_segments[1]->name)->equals($this->segment_2->name);
$response = $router->save(/* missing data */);
$response = $this->endpoint->save(/* missing data */);
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message'])
->equals('Please enter your email address');
@ -127,7 +129,7 @@ class SubscribersTest extends \MailPoetTest {
'email' => 'john.doe@invalid'
);
$response = $router->save($invalid_data);
$response = $this->endpoint->save($invalid_data);
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message'])
->equals('Your email address is invalid!');
@ -135,13 +137,12 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanSaveAnExistingSubscriber() {
$router = new Subscribers();
$subscriber_data = $this->subscriber_2->asArray();
unset($subscriber_data['created_at']);
$subscriber_data['segments'] = array($this->segment_1->id);
$subscriber_data['first_name'] = 'Super Jane';
$response = $router->save($subscriber_data);
$response = $this->endpoint->save($subscriber_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Subscriber::findOne($this->subscriber_2->id)->asArray()
@ -151,12 +152,11 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanRemoveListsFromAnExistingSubscriber() {
$router = new Subscribers();
$subscriber_data = $this->subscriber_2->asArray();
unset($subscriber_data['created_at']);
unset($subscriber_data['segments']);
$response = $router->save($subscriber_data);
$response = $this->endpoint->save($subscriber_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Subscriber::findOne($this->subscriber_2->id)->asArray()
@ -170,8 +170,7 @@ class SubscribersTest extends \MailPoetTest {
$trashed_subscriber = Subscriber::findOne($this->subscriber_1->id);
expect($trashed_subscriber->deleted_at)->notNull();
$router = new Subscribers();
$response = $router->restore(array('id' => $this->subscriber_1->id));
$response = $this->endpoint->restore(array('id' => $this->subscriber_1->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Subscriber::findOne($this->subscriber_1->id)->asArray()
@ -181,8 +180,7 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanTrashASubscriber() {
$router = new Subscribers();
$response = $router->trash(array('id' => $this->subscriber_2->id));
$response = $this->endpoint->trash(array('id' => $this->subscriber_2->id));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
Subscriber::findOne($this->subscriber_2->id)->asArray()
@ -192,18 +190,15 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanDeleteASubscriber() {
$router = new Subscribers();
$response = $router->delete(array('id' => $this->subscriber_1->id));
$response = $this->endpoint->delete(array('id' => $this->subscriber_1->id));
expect($response->data)->isEmpty();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(1);
}
function testItCanFilterListing() {
$router = new Subscribers();
// filter by non existing segment
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'filter' => array(
'segment' => '### invalid_segment_id ###'
)
@ -213,7 +208,7 @@ class SubscribersTest extends \MailPoetTest {
expect($response->meta['count'])->equals(2);
// filter by 1st segment
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'filter' => array(
'segment' => $this->segment_1->id
)
@ -223,7 +218,7 @@ class SubscribersTest extends \MailPoetTest {
expect($response->data[0]['email'])->equals($this->subscriber_2->email);
// filter by 2nd segment
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'filter' => array(
'segment' => $this->segment_2->id
)
@ -238,8 +233,7 @@ class SubscribersTest extends \MailPoetTest {
return 'segment';
};
add_filter('mailpoet_subscribers_listings_filters_segments', $add_segment);
$router = new Subscribers();
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'filter' => array(
'segment' => $this->segment_2->id
)
@ -254,23 +248,21 @@ class SubscribersTest extends \MailPoetTest {
'last_name' => 'Thornton'
));
$router = new Subscribers();
// empty search returns everything
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'search' => ''
));
expect($response->meta['count'])->equals(3);
// search by email
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'search' => '.me'
));
expect($response->meta['count'])->equals(1);
expect($response->data[0]['email'])->equals($new_subscriber->email);
// search by last name
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'search' => 'doe'
));
expect($response->meta['count'])->equals(2);
@ -278,7 +270,7 @@ class SubscribersTest extends \MailPoetTest {
expect($response->data[1]['email'])->equals($this->subscriber_2->email);
// search by first name
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'search' => 'billy'
));
expect($response->meta['count'])->equals(1);
@ -286,9 +278,7 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanGroupListing() {
$router = new Subscribers();
$subscribed_group = $router->listing(array(
$subscribed_group = $this->endpoint->listing(array(
'group' => Subscriber::STATUS_SUBSCRIBED
));
expect($subscribed_group->meta['count'])->equals(1);
@ -296,12 +286,12 @@ class SubscribersTest extends \MailPoetTest {
$this->subscriber_2->email
);
$unsubscribed_group = $router->listing(array(
$unsubscribed_group = $this->endpoint->listing(array(
'group' => Subscriber::STATUS_UNSUBSCRIBED
));
expect($unsubscribed_group->meta['count'])->equals(0);
$unconfirmed_group = $router->listing(array(
$unconfirmed_group = $this->endpoint->listing(array(
'group' => Subscriber::STATUS_UNCONFIRMED
));
expect($unconfirmed_group->meta['count'])->equals(1);
@ -309,7 +299,7 @@ class SubscribersTest extends \MailPoetTest {
$this->subscriber_1->email
);
$trashed_group = $router->listing(array(
$trashed_group = $this->endpoint->listing(array(
'group' => 'trash'
));
expect($trashed_group->meta['count'])->equals(0);
@ -317,7 +307,7 @@ class SubscribersTest extends \MailPoetTest {
// trash 1st subscriber
$this->subscriber_1->trash();
$trashed_group = $router->listing(array(
$trashed_group = $this->endpoint->listing(array(
'group' => 'trash'
));
expect($trashed_group->meta['count'])->equals(1);
@ -327,9 +317,8 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanSortAndLimitListing() {
$router = new Subscribers();
// get 1st page (limit items per page to 1)
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'limit' => 1,
'sort_by' => 'first_name',
'sort_order' => 'asc'
@ -342,7 +331,7 @@ class SubscribersTest extends \MailPoetTest {
);
// get 1st page (limit items per page to 1)
$response = $router->listing(array(
$response = $this->endpoint->listing(array(
'limit' => 1,
'offset' => 1,
'sort_by' => 'first_name',
@ -366,8 +355,7 @@ class SubscribersTest extends \MailPoetTest {
$deletable_subscriber->id
);
$router = new Subscribers();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'listing' => array(
'selection' => $selection_ids
),
@ -389,23 +377,21 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanBulkDeleteSubscribers() {
$router = new Subscribers();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'trash',
'listing' => array('group' => 'all')
));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(2);
$router = new Subscribers();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->meta['count'])->equals(2);
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));
@ -414,8 +400,7 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCannotRunAnInvalidBulkAction() {
$router = new Subscribers();
$response = $router->bulkAction(array(
$response = $this->endpoint->bulkAction(array(
'action' => 'invalidAction',
'listing' => array()
));
@ -424,8 +409,7 @@ class SubscribersTest extends \MailPoetTest {
}
function testItFailsWithEmailFilled() {
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
'form_id' => $this->form->id,
'email' => 'toto@mailpoet.com'
// no form ID specified
@ -436,8 +420,7 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCannotSubscribeWithoutFormID() {
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
'form_field_ZW1haWw' => 'toto@mailpoet.com'
// no form ID specified
));
@ -447,8 +430,7 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCannotSubscribeWithoutSegmentsIfTheyAreSelectedByUser() {
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id
// no segments specified
@ -459,8 +441,7 @@ class SubscribersTest extends \MailPoetTest {
}
function testItCanSubscribe() {
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
@ -470,8 +451,7 @@ class SubscribersTest extends \MailPoetTest {
function testItCannotSubscribeWithoutCaptchaWhenEnabled() {
Setting::setValue('re_captcha', array('enabled' => true));
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
@ -487,8 +467,7 @@ class SubscribersTest extends \MailPoetTest {
'type' => 'text',
'params' => ['required' => '1']
]);
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
@ -502,8 +481,7 @@ class SubscribersTest extends \MailPoetTest {
$this->form->settings = $form['settings'];
$this->form->save();
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id
// no segments specified
@ -524,8 +502,7 @@ class SubscribersTest extends \MailPoetTest {
$this->form->settings = $form['settings'];
$this->form->save();
$router = new Subscribers();
$response = $router->subscribe(array(
$response = $this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
@ -538,15 +515,14 @@ class SubscribersTest extends \MailPoetTest {
function testItCannotMassSubscribe() {
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$router = new Subscribers();
$response = $router->subscribe(array(
$this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
));
try {
$response = $router->subscribe(array(
$this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'tata@mailpoet.com',
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
@ -560,8 +536,7 @@ class SubscribersTest extends \MailPoetTest {
function testItCannotMassResubscribe() {
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$router = new Subscribers();
$response = $router->subscribe(array(
$this->endpoint->subscribe(array(
$this->obfuscatedEmail => 'toto@mailpoet.com',
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
@ -574,7 +549,7 @@ class SubscribersTest extends \MailPoetTest {
$subscriber->save();
try {
$response = $router->subscribe(array(
$this->endpoint->subscribe(array(
$this->obfuscatedEmail => $subscriber->email,
'form_id' => $this->form->id,
$this->obfuscatedSegments => array($this->segment_1->id, $this->segment_2->id)
@ -596,8 +571,7 @@ class SubscribersTest extends \MailPoetTest {
)
);
$router = new Subscribers();
$router->save($subscriber_data);
$this->endpoint->save($subscriber_data);
expect(SendingQueue::findMany())->count(1);
}
@ -613,12 +587,11 @@ class SubscribersTest extends \MailPoetTest {
);
// welcome notification is created only for segment #1
$router = new Subscribers();
$router->save($subscriber_data);
$this->endpoint->save($subscriber_data);
expect(SendingQueue::findMany())->isEmpty();
$subscriber_data['segments'] = array($this->segment_1->id);
$router->save($subscriber_data);
$this->endpoint->save($subscriber_data);
expect(SendingQueue::findMany())->count(1);
}