Adds unit tests
This commit is contained in:
@ -5,13 +5,11 @@ namespace MailPoet\API\JSON\v1;
|
|||||||
use MailPoet\API\JSON\Endpoint as APIEndpoint;
|
use MailPoet\API\JSON\Endpoint as APIEndpoint;
|
||||||
use MailPoet\API\JSON\Error as APIError;
|
use MailPoet\API\JSON\Error as APIError;
|
||||||
use MailPoet\Config\AccessControl;
|
use MailPoet\Config\AccessControl;
|
||||||
use MailPoet\Mailer\Mailer;
|
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
||||||
use MailPoet\Newsletter\Scheduler\Scheduler;
|
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||||
use MailPoet\Segments\SubscribersFinder;
|
use MailPoet\Segments\SubscribersFinder;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
use MailPoet\Util\Helpers;
|
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
@ -38,7 +36,7 @@ class SendingQueue extends APIEndpoint {
|
|||||||
|
|
||||||
// check that the sending method has been configured properly
|
// check that the sending method has been configured properly
|
||||||
try {
|
try {
|
||||||
new Mailer(false);
|
new \MailPoet\Mailer\Mailer(false);
|
||||||
} catch(\Exception $e) {
|
} catch(\Exception $e) {
|
||||||
return $this->errorResponse(array(
|
return $this->errorResponse(array(
|
||||||
$e->getCode() => $e->getMessage()
|
$e->getCode() => $e->getMessage()
|
||||||
|
122
tests/unit/API/JSON/v1/SendingQueueTest.php
Normal file
122
tests/unit/API/JSON/v1/SendingQueueTest.php
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Test\API\JSON\v1;
|
||||||
|
|
||||||
|
use Codeception\Util\Fixtures;
|
||||||
|
use MailPoet\API\JSON\v1\SendingQueue as SendingQueueAPI;
|
||||||
|
use MailPoet\Models\Newsletter;
|
||||||
|
use MailPoet\Models\NewsletterOption;
|
||||||
|
use MailPoet\Models\NewsletterOptionField;
|
||||||
|
use MailPoet\Models\ScheduledTask;
|
||||||
|
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
||||||
|
use MailPoet\Models\Setting;
|
||||||
|
use MailPoet\Tasks\Sending;
|
||||||
|
|
||||||
|
class SendingQueueTest extends \MailPoetTest {
|
||||||
|
function _before() {
|
||||||
|
$this->newsletter = Newsletter::createOrUpdate(
|
||||||
|
array(
|
||||||
|
'subject' => 'My Standard Newsletter',
|
||||||
|
'body' => Fixtures::get('newsletter_body_template'),
|
||||||
|
'type' => Newsletter::TYPE_STANDARD
|
||||||
|
)
|
||||||
|
);
|
||||||
|
Setting::setValue('sender', array(
|
||||||
|
'name' => 'John Doe',
|
||||||
|
'address' => 'john.doe@example.com'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCreatesNewScheduledSendingQueueTask() {
|
||||||
|
$newsletter = $this->newsletter;
|
||||||
|
$newsletter->status = Newsletter::STATUS_SCHEDULED;
|
||||||
|
$newsletter->save();
|
||||||
|
$newletter_options = array(
|
||||||
|
'isScheduled' => 1,
|
||||||
|
'scheduledAt' => '2018-10-10 10:00:00'
|
||||||
|
);
|
||||||
|
$this->_createOrUpdateNewsletterOptions(
|
||||||
|
$newsletter->id,
|
||||||
|
Newsletter::TYPE_STANDARD,
|
||||||
|
$newletter_options
|
||||||
|
);
|
||||||
|
|
||||||
|
$sending_queue = new SendingQueueAPI();
|
||||||
|
$result = $sending_queue->add(array('newsletter_id' => $newsletter->id));
|
||||||
|
$scheduled_task = ScheduledTask::findOne($result->data['task_id']);
|
||||||
|
expect($scheduled_task->status)->equals(ScheduledTask::STATUS_SCHEDULED);
|
||||||
|
expect($scheduled_task->scheduled_at)->equals($newletter_options['scheduledAt']);
|
||||||
|
expect($scheduled_task->type)->equals(Sending::TASK_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItReschedulesScheduledSendingQueueTask() {
|
||||||
|
$newsletter = $this->newsletter;
|
||||||
|
$newsletter->status = Newsletter::STATUS_SCHEDULED;
|
||||||
|
$newsletter->save();
|
||||||
|
$newletter_options = array(
|
||||||
|
'isScheduled' => 1,
|
||||||
|
'scheduledAt' => '2018-10-10 10:00:00'
|
||||||
|
);
|
||||||
|
$this->_createOrUpdateNewsletterOptions(
|
||||||
|
$newsletter->id,
|
||||||
|
Newsletter::TYPE_STANDARD,
|
||||||
|
$newletter_options
|
||||||
|
);
|
||||||
|
$sending_queue = new SendingQueueAPI();
|
||||||
|
|
||||||
|
// add scheduled task
|
||||||
|
$result = $sending_queue->add(array('newsletter_id' => $newsletter->id));
|
||||||
|
$scheduled_task = ScheduledTask::findOne($result->data['task_id']);
|
||||||
|
expect($scheduled_task->scheduled_at)->equals('2018-10-10 10:00:00');
|
||||||
|
|
||||||
|
// update scheduled time
|
||||||
|
$newletter_options = array(
|
||||||
|
'scheduledAt' => '2018-11-11 11:00:00'
|
||||||
|
);
|
||||||
|
$this->_createOrUpdateNewsletterOptions(
|
||||||
|
$newsletter->id,
|
||||||
|
Newsletter::TYPE_STANDARD,
|
||||||
|
$newletter_options
|
||||||
|
);
|
||||||
|
$result = $sending_queue->add(array('newsletter_id' => $newsletter->id));
|
||||||
|
$rescheduled_task = ScheduledTask::findOne($result->data['task_id']);
|
||||||
|
// new task was not created
|
||||||
|
expect($rescheduled_task->id)->equals($scheduled_task->id);
|
||||||
|
// scheduled time was updated
|
||||||
|
expect($rescheduled_task->scheduled_at)->equals('2018-11-11 11:00:00');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function _createOrUpdateNewsletterOptions($newsletter_id, $newsletter_type, $options) {
|
||||||
|
foreach($options as $option => $value) {
|
||||||
|
$newsletter_option_field = NewsletterOptionField::where('name', $option)->findOne();
|
||||||
|
if(!$newsletter_option_field) {
|
||||||
|
$newsletter_option_field = NewsletterOptionField::create();
|
||||||
|
$newsletter_option_field->name = $option;
|
||||||
|
$newsletter_option_field->newsletter_type = $newsletter_type;
|
||||||
|
$newsletter_option_field->save();
|
||||||
|
expect($newsletter_option_field->getErrors())->false();
|
||||||
|
}
|
||||||
|
|
||||||
|
$newsletter_option = NewsletterOption::where('newsletter_id', $newsletter_id)
|
||||||
|
->where('option_field_id', $newsletter_option_field->id)
|
||||||
|
->findOne();
|
||||||
|
if(!$newsletter_option) {
|
||||||
|
$newsletter_option = NewsletterOption::create();
|
||||||
|
$newsletter_option->option_field_id = $newsletter_option_field->id;
|
||||||
|
$newsletter_option->newsletter_id = $newsletter_id;
|
||||||
|
}
|
||||||
|
$newsletter_option->value = $value;
|
||||||
|
$newsletter_option->save();
|
||||||
|
expect($newsletter_option->getErrors())->false();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . SendingQueueModel::$_table);
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user