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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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