Inject bulk action controller using DI
[MAILPOET-1689]
This commit is contained in:
@ -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(
|
||||
|
@ -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(
|
||||
|
@ -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(
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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')
|
||||
));
|
||||
|
@ -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);
|
||||
|
@ -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')
|
||||
));
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user