Fix unit tests [MAILPOET-903]
This commit is contained in:
@ -166,7 +166,7 @@ class Newsletters extends APIEndpoint {
|
||||
// if there are past due notifications, reschedule them for the next send date
|
||||
if($newsletter->type === Newsletter::TYPE_NOTIFICATION && $status === Newsletter::STATUS_ACTIVE) {
|
||||
$next_run_date = Scheduler::getNextRunDate($newsletter->schedule);
|
||||
$newsletter->queue()->task()
|
||||
$newsletter->queue()->findOne()->task()
|
||||
->whereLte('scheduled_at', Carbon::createFromTimestamp(current_time('timestamp')))
|
||||
->where('status', SendingQueue::STATUS_SCHEDULED)
|
||||
->findResultSet()
|
||||
|
@ -46,7 +46,7 @@ class SendingQueue extends APIEndpoint {
|
||||
}
|
||||
|
||||
// add newsletter to the sending queue
|
||||
$queue = SendingQueueModel::findTaskByNewsletterId($newsletter->id)
|
||||
$queue = SendingQueueModel::joinWithTasks()
|
||||
->whereNull('tasks.status')
|
||||
->findOne();
|
||||
|
||||
|
@ -9,6 +9,7 @@ use MailPoet\Cron\Workers\Bounce as BounceWorker;
|
||||
use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker;
|
||||
use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Services\Bridge;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
@ -22,6 +23,7 @@ class WordPress {
|
||||
|
||||
static function checkExecutionRequirements() {
|
||||
// migration
|
||||
$migration_disabled = Setting::getValue('cron_trigger.method') === 'none';
|
||||
$migration_due_tasks = MigrationWorker::getAllDueTasks();
|
||||
$migration_future_tasks = MigrationWorker::getFutureTasks();
|
||||
// sending queue
|
||||
@ -46,7 +48,7 @@ class WordPress {
|
||||
$bounce_sync_active = ($mp_sending_enabled && ($bounce_due_tasks || !$bounce_future_tasks));
|
||||
$sending_service_key_check_active = ($mp_sending_enabled && ($msskeycheck_due_tasks || !$msskeycheck_future_tasks));
|
||||
$premium_key_check_active = ($premium_key_specified && ($premium_keycheck_due_tasks || !$premium_keycheck_future_tasks));
|
||||
$migration_active = $migration_due_tasks || !$migration_future_tasks;
|
||||
$migration_active = !$migration_disabled && ($migration_due_tasks || !$migration_future_tasks);
|
||||
|
||||
return (
|
||||
$migration_active
|
||||
|
@ -22,11 +22,15 @@ class Migration extends SimpleWorker {
|
||||
}
|
||||
|
||||
function prepareTask(ScheduledTask $task) {
|
||||
$unmigrated_columns = self::checkUnmigratedColumnsExist();
|
||||
if($unmigrated_columns) {
|
||||
$unmigrated_queues_count = $this->getUnmigratedQueues()->count();
|
||||
$unmigrated_queue_subscribers = $this->getTaskIdsForUnmigratedSubscribers();
|
||||
}
|
||||
|
||||
if($unmigrated_queues_count == 0
|
||||
&& count($unmigrated_queue_subscribers) == 0
|
||||
if(!$unmigrated_columns ||
|
||||
($unmigrated_queues_count == 0
|
||||
&& count($unmigrated_queue_subscribers) == 0)
|
||||
) {
|
||||
// nothing to migrate
|
||||
$this->complete($task);
|
||||
@ -40,7 +44,7 @@ class Migration extends SimpleWorker {
|
||||
return parent::prepareTask($task);
|
||||
}
|
||||
|
||||
private function pauseSending() {
|
||||
function pauseSending() {
|
||||
$mailer_log = MailerLog::getMailerLog();
|
||||
if(MailerLog::isSendingPaused($mailer_log)) {
|
||||
// sending is already paused
|
||||
@ -54,7 +58,7 @@ class Migration extends SimpleWorker {
|
||||
return MailerLog::pauseSending($mailer_log);
|
||||
}
|
||||
|
||||
private function resumeSending() {
|
||||
function resumeSending() {
|
||||
$mailer_log = MailerLog::getMailerLog();
|
||||
if(!MailerLog::isSendingPaused($mailer_log)) {
|
||||
// sending is not paused
|
||||
@ -77,6 +81,12 @@ class Migration extends SimpleWorker {
|
||||
return true;
|
||||
}
|
||||
|
||||
static function checkUnmigratedColumnsExist() {
|
||||
global $wpdb;
|
||||
$existing_columns = $wpdb->get_col('DESC ' . SendingQueue::$_table, 0);
|
||||
return in_array('type', $existing_columns);
|
||||
}
|
||||
|
||||
function getUnmigratedQueues() {
|
||||
return SendingQueue::where('task_id', 0)
|
||||
->whereNull('type');
|
||||
|
@ -181,11 +181,17 @@ class Newsletter extends Model {
|
||||
if($children) {
|
||||
$children = Helpers::flattenArray($children);
|
||||
$this->children()->deleteMany();
|
||||
SendingQueue::getTasks()->whereIn('queues.newsletter_id', array_merge($children, array($this->id)))->deleteMany();
|
||||
SendingQueue::getTasks()
|
||||
->whereIn('queues.newsletter_id', array_merge($children, array($this->id)))
|
||||
->findResultSet()
|
||||
->delete();
|
||||
SendingQueue::whereIn('newsletter_id', array_merge($children, array($this->id)))->deleteMany();
|
||||
NewsletterSegment::whereIn('newsletter_id', array_merge($children, array($this->id)))->deleteMany();
|
||||
} else {
|
||||
SendingQueue::getTasks()->where('queues.newsletter_id', $this->id)->deleteMany();
|
||||
SendingQueue::getTasks()
|
||||
->where('queues.newsletter_id', $this->id)
|
||||
->findResultSet()
|
||||
->delete();
|
||||
$this->queue()->deleteMany();
|
||||
$this->segmentRelations()->deleteMany();
|
||||
}
|
||||
@ -200,11 +206,17 @@ class Newsletter extends Model {
|
||||
if($children) {
|
||||
$children = Helpers::flattenArray($children);
|
||||
Newsletter::whereIn('parent_id', $ids)->deleteMany();
|
||||
SendingQueue::getTasks()->whereIn('queues.newsletter_id', array_merge($children, $ids))->deleteMany();
|
||||
SendingQueue::getTasks()
|
||||
->whereIn('queues.newsletter_id', array_merge($children, $ids))
|
||||
->findResultSet()
|
||||
->delete();
|
||||
SendingQueue::whereIn('newsletter_id', array_merge($children, $ids))->deleteMany();
|
||||
NewsletterSegment::whereIn('newsletter_id', array_merge($children, $ids))->deleteMany();
|
||||
} else {
|
||||
SendingQueue::getTasks()->whereIn('queues.newsletter_id', $ids)->deleteMany();
|
||||
SendingQueue::getTasks()
|
||||
->whereIn('queues.newsletter_id', $ids)
|
||||
->findResultSet()
|
||||
->delete();
|
||||
SendingQueue::whereIn('newsletter_id', $ids)->deleteMany();
|
||||
NewsletterSegment::whereIn('newsletter_id', $ids)->deleteMany();
|
||||
}
|
||||
@ -266,7 +278,7 @@ class Newsletter extends Model {
|
||||
->save();
|
||||
SendingQueue::getTasks()
|
||||
->whereIn('queues.newsletter_id', Helpers::flattenArray($children))
|
||||
->whereNotNull('deleted_at')
|
||||
->whereNotNull('tasks.deleted_at')
|
||||
->findResultSet()
|
||||
->set('deleted_at', null)
|
||||
->save();
|
||||
@ -278,7 +290,7 @@ class Newsletter extends Model {
|
||||
} else {
|
||||
SendingQueue::getTasks()
|
||||
->whereIn('queues.newsletter_id', $ids)
|
||||
->whereNotNull('deleted_at')
|
||||
->whereNotNull('tasks.deleted_at')
|
||||
->findResultSet()
|
||||
->set('deleted_at', null)
|
||||
->save();
|
||||
|
@ -60,10 +60,6 @@ class SendingQueue extends Model {
|
||||
json_encode($this->encodeEmojisInBody($this->newsletter_rendered_body))
|
||||
);
|
||||
}
|
||||
// set the default priority to medium
|
||||
if(!$this->priority) {
|
||||
$this->priority = self::PRIORITY_MEDIUM;
|
||||
}
|
||||
parent::save();
|
||||
$this->newsletter_rendered_body = $this->getNewsletterRenderedBody();
|
||||
return $this;
|
||||
@ -147,7 +143,7 @@ class SendingQueue extends Model {
|
||||
}
|
||||
|
||||
static function findTaskByNewsletterId($newsletter_id) {
|
||||
return static::joinWithTasks()
|
||||
return static::getTasks()
|
||||
->where('queues.newsletter_id', $newsletter_id);
|
||||
}
|
||||
}
|
||||
|
@ -109,8 +109,8 @@ class Scheduler {
|
||||
$next_run_date = self::getNextRunDate($newsletter->schedule);
|
||||
if(!$next_run_date) return;
|
||||
// do not schedule duplicate queues for the same time
|
||||
$existing_queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
->where('scheduled_at', $next_run_date)
|
||||
$existing_queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->where('tasks.scheduled_at', $next_run_date)
|
||||
->findOne();
|
||||
if($existing_queue) return;
|
||||
$queue = SendingTask::create();
|
||||
|
@ -10,6 +10,7 @@ use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\Links\Links;
|
||||
use MailPoet\Statistics\Track\Clicks;
|
||||
use MailPoet\Statistics\Track\Opens;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
@ -49,6 +50,9 @@ class Track {
|
||||
return false;
|
||||
}
|
||||
$data->queue = SendingQueue::findOne($data->queue_id);
|
||||
if($data->queue) {
|
||||
$data->queue = SendingTask::createFromQueue($data->queue);
|
||||
}
|
||||
$data->subscriber = Subscriber::findOne($data->subscriber_id);
|
||||
$data->newsletter = (!empty($data->queue->newsletter_id)) ?
|
||||
Newsletter::findOne($data->queue->newsletter_id) :
|
||||
|
@ -30,13 +30,13 @@ class Sending {
|
||||
'count_to_process'
|
||||
);
|
||||
|
||||
public function __construct(ScheduledTask $task, SendingQueue $queue) {
|
||||
$this->task = $task;
|
||||
$this->queue = $queue;
|
||||
$this->task_subscribers = new Subscribers($task);
|
||||
}
|
||||
private $common_fields = array(
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'deleted_at'
|
||||
);
|
||||
|
||||
static function create(ScheduledTask $task = null, SendingQueue $queue = null) {
|
||||
private function __construct(ScheduledTask $task = null, SendingQueue $queue = null) {
|
||||
if(is_null($task) && is_null($queue)) {
|
||||
$task = ScheduledTask::create();
|
||||
$task->type = self::TASK_TYPE;
|
||||
@ -48,6 +48,16 @@ class Sending {
|
||||
$queue->save();
|
||||
}
|
||||
|
||||
if($task->type !== self::TASK_TYPE) {
|
||||
throw new \Exception('Only tasks of type "' . self::TASK_TYPE . '" are accepted by this class');
|
||||
}
|
||||
|
||||
$this->task = $task;
|
||||
$this->queue = $queue;
|
||||
$this->task_subscribers = new Subscribers($task);
|
||||
}
|
||||
|
||||
static function create(ScheduledTask $task = null, SendingQueue $queue = null) {
|
||||
return new self($task, $queue);
|
||||
}
|
||||
|
||||
@ -89,6 +99,15 @@ class Sending {
|
||||
return array_merge($task, $queue);
|
||||
}
|
||||
|
||||
public function getErrors() {
|
||||
$queue_errors = $this->queue->getErrors();
|
||||
$task_errors = $this->task->getErrors();
|
||||
if(empty($queue_errors) && empty($task_errors)) {
|
||||
return false;
|
||||
}
|
||||
return array_merge((array)$queue_errors, (array)$task_errors);
|
||||
}
|
||||
|
||||
public function save() {
|
||||
$this->task->save();
|
||||
$this->queue->save();
|
||||
@ -113,8 +132,13 @@ class Sending {
|
||||
return $this->task_subscribers;
|
||||
}
|
||||
|
||||
public function getSubscribers() {
|
||||
$subscribers = $this->task_subscribers->getSubscribers()->findArray();
|
||||
public function getSubscribers($processed = null) {
|
||||
$subscribers = $this->task_subscribers->getSubscribers();
|
||||
if(!is_null($processed)) {
|
||||
$status = ($processed) ? ScheduledTaskSubscriber::STATUS_PROCESSED : ScheduledTaskSubscriber::STATUS_UNPROCESSED;
|
||||
$subscribers->where('processed', $status);
|
||||
}
|
||||
$subscribers = $subscribers->findArray();
|
||||
return Helpers::arrayColumn($subscribers, 'subscriber_id');
|
||||
}
|
||||
|
||||
@ -145,6 +169,24 @@ class Sending {
|
||||
return $this->queue->save();
|
||||
}
|
||||
|
||||
public function hydrate(array $data) {
|
||||
foreach($data as $k => $v) {
|
||||
$this->__set($k, $v);
|
||||
}
|
||||
}
|
||||
|
||||
public function validate() {
|
||||
return $this->queue->validate() && $this->task->validate();
|
||||
}
|
||||
|
||||
public function __isset($prop) {
|
||||
if($this->isQueueProperty($prop)) {
|
||||
return isset($this->queue->$prop);
|
||||
} else {
|
||||
return isset($this->task->$prop);
|
||||
}
|
||||
}
|
||||
|
||||
public function __get($prop) {
|
||||
if($this->isQueueProperty($prop)) {
|
||||
return $this->queue->$prop;
|
||||
@ -154,7 +196,10 @@ class Sending {
|
||||
}
|
||||
|
||||
public function __set($prop, $value) {
|
||||
if($this->isQueueProperty($prop)) {
|
||||
if($this->isCommonProperty($prop)) {
|
||||
$this->queue->$prop = $value;
|
||||
$this->task->$prop = $value;
|
||||
} elseif($this->isQueueProperty($prop)) {
|
||||
$this->queue->$prop = $value;
|
||||
} else {
|
||||
$this->task->$prop = $value;
|
||||
@ -170,6 +215,10 @@ class Sending {
|
||||
return in_array($prop, $this->queue_fields);
|
||||
}
|
||||
|
||||
private function isCommonProperty($prop) {
|
||||
return in_array($prop, $this->common_fields);
|
||||
}
|
||||
|
||||
static function getScheduledQueues() {
|
||||
$tasks = ScheduledTask::where('status', ScheduledTask::STATUS_SCHEDULED)
|
||||
->whereLte('scheduled_at', Carbon::createFromTimestamp(current_time('timestamp')))
|
||||
|
@ -43,11 +43,13 @@ class Subscribers {
|
||||
}
|
||||
|
||||
function updateProcessedSubscribers(array $processed_subscribers) {
|
||||
if(!empty($processed_subscribers)) {
|
||||
$this->getSubscribers()
|
||||
->whereIn('subscriber_id', $processed_subscribers)
|
||||
->findResultSet()
|
||||
->set('processed', ScheduledTaskSubscriber::STATUS_PROCESSED)
|
||||
->save();
|
||||
}
|
||||
$this->checkCompleted();
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
@ -19,6 +20,7 @@ use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||
use MailPoet\Newsletter\Url;
|
||||
use MailPoet\Router\Router;
|
||||
use MailPoet\Subscription\Url as SubscriptionUrl;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class NewslettersTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -168,7 +170,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
function testItCanClearRenderedQueueUponSave() {
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $this->newsletter->id;
|
||||
$sending_queue->status = SendingQueue::STATUS_SCHEDULED;
|
||||
$sending_queue->newsletter_rendered_body = array('html' => 'html', 'text' => 'text');
|
||||
@ -257,13 +259,13 @@ class NewslettersTest extends \MailPoetTest {
|
||||
|
||||
// create sending queues
|
||||
$current_time = Carbon::now();
|
||||
$sending_queue_1 = SendingQueue::create();
|
||||
$sending_queue_1 = SendingTask::create();
|
||||
$sending_queue_1->newsletter_id = 1;
|
||||
$sending_queue_1->status = SendingQueue::STATUS_SCHEDULED;
|
||||
$sending_queue_1->scheduled_at = $current_time;
|
||||
$sending_queue_1->save();
|
||||
|
||||
$sending_queue_2 = SendingQueue::create();
|
||||
$sending_queue_2 = SendingTask::create();
|
||||
$sending_queue_2->newsletter_id = 1;
|
||||
$sending_queue_2->save();
|
||||
|
||||
@ -284,8 +286,8 @@ class NewslettersTest extends \MailPoetTest {
|
||||
)
|
||||
);
|
||||
$newsletter = $router->save($newsletter_data);
|
||||
$sending_queue_1 = SendingQueue::findOne($sending_queue_1->id);
|
||||
$sending_queue_2 = SendingQueue::findOne($sending_queue_2->id);
|
||||
$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);
|
||||
expect($sending_queue_1->scheduled_at)->equals(
|
||||
Scheduler::getNextRunDate($newsletter->data['schedule'])
|
||||
@ -375,17 +377,17 @@ class NewslettersTest extends \MailPoetTest {
|
||||
'value' => $schedule
|
||||
)
|
||||
);
|
||||
$sending_queue_1 = SendingQueue::create();
|
||||
$sending_queue_1 = SendingTask::create();
|
||||
$sending_queue_1->newsletter_id = $this->post_notification->id;
|
||||
$sending_queue_1->scheduled_at = Scheduler::getPreviousRunDate($schedule);
|
||||
$sending_queue_1->status = SendingQueue::STATUS_SCHEDULED;
|
||||
$sending_queue_1->save();
|
||||
$sending_queue_2 = SendingQueue::create();
|
||||
$sending_queue_2 = SendingTask::create();
|
||||
$sending_queue_2->newsletter_id = $this->post_notification->id;
|
||||
$sending_queue_2->scheduled_at = $random_future_date;
|
||||
$sending_queue_2->status = SendingQueue::STATUS_SCHEDULED;
|
||||
$sending_queue_2->save();
|
||||
$sending_queue_3 = SendingQueue::create();
|
||||
$sending_queue_3 = SendingTask::create();
|
||||
$sending_queue_3->newsletter_id = $this->post_notification->id;
|
||||
$sending_queue_3->scheduled_at = Scheduler::getPreviousRunDate($schedule);
|
||||
$sending_queue_3->save();
|
||||
@ -397,13 +399,13 @@ class NewslettersTest extends \MailPoetTest {
|
||||
'status' => Newsletter::STATUS_ACTIVE
|
||||
)
|
||||
);
|
||||
$sending_queues = SendingQueue::findMany();
|
||||
$tasks = ScheduledTask::findMany();
|
||||
// previously scheduled notification is rescheduled for future date
|
||||
expect($sending_queues[0]->scheduled_at)->equals(Scheduler::getNextRunDate($schedule));
|
||||
expect($tasks[0]->scheduled_at)->equals(Scheduler::getNextRunDate($schedule));
|
||||
// future scheduled notifications are left intact
|
||||
expect($sending_queues[1]->scheduled_at)->equals($random_future_date);
|
||||
expect($tasks[1]->scheduled_at)->equals($random_future_date);
|
||||
// previously unscheduled (e.g., sent/sending) notifications are left intact
|
||||
expect($sending_queues[2]->scheduled_at)->equals(Scheduler::getPreviousRunDate($schedule));
|
||||
expect($tasks[2]->scheduled_at)->equals(Scheduler::getPreviousRunDate($schedule));
|
||||
}
|
||||
|
||||
function testItCanRestoreANewsletter() {
|
||||
@ -785,7 +787,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
$newsletter->save();
|
||||
expect($newsletter->getErrors())->false();
|
||||
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->newsletter_rendered_body = array(
|
||||
'html' => 'html',
|
||||
@ -816,6 +818,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterSegment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Segment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
|
@ -5,10 +5,12 @@ use Codeception\Util\Fixtures;
|
||||
use Helper\WordPress;
|
||||
use MailPoet\Config\Shortcodes;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\Url;
|
||||
use MailPoet\Router\Router;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class ShortcodesTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -16,7 +18,7 @@ class ShortcodesTest extends \MailPoetTest {
|
||||
$newsletter->type = Newsletter::TYPE_STANDARD;
|
||||
$newsletter->status = Newsletter::STATUS_SENT;
|
||||
$this->newsletter = $newsletter->save();
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->status = SendingQueue::STATUS_COMPLETED;
|
||||
$this->queue = $queue->save();
|
||||
@ -128,6 +130,7 @@ class ShortcodesTest extends \MailPoetTest {
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,10 @@ use MailPoet\Cron\CronHelper;
|
||||
use MailPoet\Cron\Triggers\WordPress;
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class WordPressTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -103,7 +105,7 @@ class WordPressTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
function _addQueue($status) {
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->hydrate(
|
||||
array(
|
||||
'newsletter_id' => 1,
|
||||
@ -118,6 +120,7 @@ class WordPressTest extends \MailPoetTest {
|
||||
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
}
|
||||
}
|
@ -11,10 +11,13 @@ use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class SchedulerTest extends \MailPoetTest {
|
||||
function testItDefinesConstants() {
|
||||
@ -40,7 +43,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
|
||||
function testItCanGetScheduledQueues() {
|
||||
expect(Scheduler::getScheduledQueues())->isEmpty();
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = 1;
|
||||
$queue->status = SendingQueue::STATUS_SCHEDULED;
|
||||
$queue->scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
@ -103,7 +106,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
expect($queue->scheduled_at)->null();
|
||||
$newsletter->schedule = '0 5 * * *'; // set it to daily at 5
|
||||
$scheduler->deleteQueueOrUpdateNextRunDate($queue, $newsletter);
|
||||
$queue = SendingQueue::findOne($queue->id);
|
||||
$queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
expect($queue->scheduled_at)->notNull();
|
||||
}
|
||||
|
||||
@ -198,7 +201,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
function testItDoesNotProcessWelcomeNewsletterWhenThereAreNoSubscribersToProcess() {
|
||||
$newsletter = $this->_createNewsletter();
|
||||
$queue = $this->_createQueue($newsletter->id);
|
||||
$queue->subscribers = serialize(array());
|
||||
$queue->setSubscribers(array());
|
||||
|
||||
// delete queue when the list of subscribers to process is blank
|
||||
$scheduler = new Scheduler();
|
||||
@ -211,7 +214,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$newsletter = $this->_createNewsletter();
|
||||
$newsletter->event = 'user';
|
||||
$queue = $this->_createQueue($newsletter->id);
|
||||
$queue->subscribers = serialize(array('to_process' => array(1)));
|
||||
$queue->setSubscribers(array(1));
|
||||
|
||||
// return false when WP user cannot be verified
|
||||
$scheduler = Stub::make(new Scheduler(), array(
|
||||
@ -226,7 +229,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$newsletter = $this->_createNewsletter();
|
||||
$newsletter->event = 'segment';
|
||||
$queue = $this->_createQueue($newsletter->id);
|
||||
$queue->subscribers = serialize(array('to_process' => array(1)));
|
||||
$queue->setSubscribers(array(1));
|
||||
|
||||
// return false when subscriber cannot be verified
|
||||
$scheduler = Stub::make(new Scheduler(), array(
|
||||
@ -243,13 +246,13 @@ class SchedulerTest extends \MailPoetTest {
|
||||
|
||||
// return true when subsriber is verified and update the queue's status to null
|
||||
$queue = $this->_createQueue($newsletter->id);
|
||||
$queue->subscribers = serialize(array('to_process' => array(1)));
|
||||
$queue->setSubscribers(array(1));
|
||||
$scheduler = Stub::make(new Scheduler(), array(
|
||||
'verifyMailpoetSubscriber' => Stub::exactly(1)
|
||||
), $this);
|
||||
expect($queue->status)->notNull();
|
||||
expect($scheduler->processWelcomeNewsletter($newsletter, $queue))->true();
|
||||
$updated_queue = SendingQueue::findOne($queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
expect($updated_queue->status)->null();
|
||||
}
|
||||
|
||||
@ -259,14 +262,14 @@ class SchedulerTest extends \MailPoetTest {
|
||||
|
||||
// return true when WP user is verified
|
||||
$queue = $this->_createQueue($newsletter->id);
|
||||
$queue->subscribers = serialize(array('to_process' => array(1)));
|
||||
$queue->setSubscribers(array(1));
|
||||
$scheduler = Stub::make(new Scheduler(), array(
|
||||
'verifyWPSubscriber' => Stub::exactly(1)
|
||||
), $this);
|
||||
expect($queue->status)->notNull();
|
||||
expect($scheduler->processWelcomeNewsletter($newsletter, $queue))->true();
|
||||
// update queue's status to null
|
||||
$updated_queue = SendingQueue::findOne($queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
expect($updated_queue->status)->null();
|
||||
}
|
||||
|
||||
@ -320,7 +323,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
||||
expect($result)->false();
|
||||
// update the time queue is scheduled to run at
|
||||
$updated_queue = SendingQueue::findOne($queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
expect(Carbon::parse($updated_queue->scheduled_at))->equals(
|
||||
Carbon::createFromTimestamp(current_time('timestamp'))
|
||||
->addMinutes(Scheduler::UNCONFIRMED_SUBSCRIBER_RESCHEDULE_TIMEOUT)
|
||||
@ -369,9 +372,9 @@ class SchedulerTest extends \MailPoetTest {
|
||||
// return true
|
||||
expect($scheduler->processScheduledStandardNewsletter($newsletter, $queue))->true();
|
||||
// update queue's list of subscribers to process
|
||||
$updated_queue = SendingQueue::findOne($queue->id);
|
||||
$updated_queue_subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue_subscribers['to_process'])->equals(array($subscriber->id));
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
$updated_queue_subscribers = $updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED);
|
||||
expect($updated_queue_subscribers)->equals(array($subscriber->id));
|
||||
// set queue's status to null
|
||||
expect($updated_queue->status)->null();
|
||||
// set newsletter's status to sending
|
||||
@ -435,9 +438,9 @@ class SchedulerTest extends \MailPoetTest {
|
||||
expect($notification_history)->notEmpty();
|
||||
// update queue with a list of subscribers to process and change newsletter id
|
||||
// to that of the notification history
|
||||
$updated_queue = SendingQueue::findOne($queue->id);
|
||||
$updated_queue_subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue_subscribers['to_process'])->equals(array($subscriber->id));
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
$updated_queue_subscribers = $updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED);
|
||||
expect($updated_queue_subscribers)->equals(array($subscriber->id));
|
||||
expect($updated_queue->newsletter_id)->equals($notification_history->id);
|
||||
// set notification history's status to sending
|
||||
$updated_notification_history = Newsletter::where('parent_id', $newsletter->id)
|
||||
@ -637,7 +640,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
function _createQueue($newsletter_id, $status = SendingQueue::STATUS_SCHEDULED) {
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->status = $status;
|
||||
$queue->newsletter_id = $newsletter_id;
|
||||
$queue->save();
|
||||
@ -672,6 +675,8 @@ class SchedulerTest extends \MailPoetTest {
|
||||
Mock::clean();
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||
|
@ -15,6 +15,8 @@ use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\NewsletterPost;
|
||||
use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Setting;
|
||||
@ -25,6 +27,7 @@ use MailPoet\Newsletter\Links\Links;
|
||||
use MailPoet\Router\Endpoints\Track;
|
||||
use MailPoet\Router\Router;
|
||||
use MailPoet\Subscription\Url;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\WP\Hooks;
|
||||
|
||||
class SendingQueueTest extends \MailPoetTest {
|
||||
@ -56,14 +59,9 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
$this->newsletter_segment->newsletter_id = $this->newsletter->id;
|
||||
$this->newsletter_segment->segment_id = $this->segment->id;
|
||||
$this->newsletter_segment->save();
|
||||
$this->queue = SendingQueue::create();
|
||||
$this->queue = SendingTask::create();
|
||||
$this->queue->newsletter_id = $this->newsletter->id;
|
||||
$this->queue->subscribers = serialize(
|
||||
array(
|
||||
'to_process' => array($this->subscriber->id),
|
||||
'processed' => array()
|
||||
)
|
||||
);
|
||||
$this->queue->setSubscribers(array($this->subscriber->id));
|
||||
$this->queue->count_total = 1;
|
||||
$this->queue->save();
|
||||
$this->newsletter_link = NewsletterLink::create();
|
||||
@ -277,17 +275,14 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENT);
|
||||
|
||||
// queue status is set to completed
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect($updated_queue->status)->equals(SendingQueue::STATUS_COMPLETED);
|
||||
|
||||
// queue subscriber processed/to process count is updated
|
||||
$updated_queue->subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue->subscribers)->equals(
|
||||
array(
|
||||
'to_process' => array(),
|
||||
'processed' => array($this->subscriber->id)
|
||||
)
|
||||
);
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED))
|
||||
->equals(array());
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_PROCESSED))
|
||||
->equals(array($this->subscriber->id));
|
||||
expect($updated_queue->count_total)->equals(1);
|
||||
expect($updated_queue->count_processed)->equals(1);
|
||||
expect($updated_queue->count_to_process)->equals(0);
|
||||
@ -326,17 +321,14 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENT);
|
||||
|
||||
// queue status is set to completed
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect($updated_queue->status)->equals(SendingQueue::STATUS_COMPLETED);
|
||||
|
||||
// queue subscriber processed/to process count is updated
|
||||
$updated_queue->subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue->subscribers)->equals(
|
||||
array(
|
||||
'to_process' => array(),
|
||||
'processed' => array($this->subscriber->id)
|
||||
)
|
||||
);
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED))
|
||||
->equals(array());
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_PROCESSED))
|
||||
->equals(array($this->subscriber->id));
|
||||
expect($updated_queue->count_total)->equals(1);
|
||||
expect($updated_queue->count_processed)->equals(1);
|
||||
expect($updated_queue->count_to_process)->equals(0);
|
||||
@ -368,7 +360,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
$sending_queue_worker->process();
|
||||
|
||||
// queue status is set to completed
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect($updated_queue->status)->equals(SendingQueue::STATUS_COMPLETED);
|
||||
|
||||
// newsletter status is set to sent and sent_at date is populated
|
||||
@ -377,13 +369,10 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
expect($updated_newsletter->sent_at)->equals($updated_queue->processed_at);
|
||||
|
||||
// queue subscriber processed/to process count is updated
|
||||
$updated_queue->subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue->subscribers)->equals(
|
||||
array(
|
||||
'to_process' => array(),
|
||||
'processed' => array($this->subscriber->id)
|
||||
)
|
||||
);
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED))
|
||||
->equals(array());
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_PROCESSED))
|
||||
->equals(array($this->subscriber->id));
|
||||
expect($updated_queue->count_total)->equals(1);
|
||||
expect($updated_queue->count_processed)->equals(1);
|
||||
expect($updated_queue->count_to_process)->equals(0);
|
||||
@ -422,17 +411,14 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENT);
|
||||
|
||||
// queue status is set to completed
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect($updated_queue->status)->equals(SendingQueue::STATUS_COMPLETED);
|
||||
|
||||
// queue subscriber processed/to process count is updated
|
||||
$updated_queue->subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue->subscribers)->equals(
|
||||
array(
|
||||
'to_process' => array(),
|
||||
'processed' => array($this->subscriber->id)
|
||||
)
|
||||
);
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED))
|
||||
->equals(array());
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_PROCESSED))
|
||||
->equals(array($this->subscriber->id));
|
||||
expect($updated_queue->count_total)->equals(1);
|
||||
expect($updated_queue->count_processed)->equals(1);
|
||||
expect($updated_queue->count_to_process)->equals(0);
|
||||
@ -447,15 +433,10 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
|
||||
function testItRemovesNonexistentSubscribersFromProcessingList() {
|
||||
$queue = $this->queue;
|
||||
$queue->subscribers = serialize(
|
||||
array(
|
||||
'to_process' => array(
|
||||
$queue->setSubscribers(array(
|
||||
$this->subscriber->id(),
|
||||
12345645454
|
||||
),
|
||||
'processed' => array()
|
||||
)
|
||||
);
|
||||
));
|
||||
$queue->count_total = 2;
|
||||
$queue->save();
|
||||
$sending_queue_worker = $this->sending_queue_worker;
|
||||
@ -470,15 +451,12 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
);
|
||||
$sending_queue_worker->process();
|
||||
|
||||
$updated_queue = SendingQueue::findOne($queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
// queue subscriber processed/to process count is updated
|
||||
$updated_queue->subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue->subscribers)->equals(
|
||||
array(
|
||||
'to_process' => array(),
|
||||
'processed' => array($this->subscriber->id)
|
||||
)
|
||||
);
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED))
|
||||
->equals(array());
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_PROCESSED))
|
||||
->equals(array($this->subscriber->id));
|
||||
expect($updated_queue->count_total)->equals(1);
|
||||
expect($updated_queue->count_processed)->equals(1);
|
||||
expect($updated_queue->count_to_process)->equals(0);
|
||||
@ -490,15 +468,10 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
|
||||
function testItUpdatesQueueSubscriberCountWhenNoneOfSubscribersExist() {
|
||||
$queue = $this->queue;
|
||||
$queue->subscribers = serialize(
|
||||
array(
|
||||
'to_process' => array(
|
||||
$queue->setSubscribers(array(
|
||||
123,
|
||||
456
|
||||
),
|
||||
'processed' => array()
|
||||
)
|
||||
);
|
||||
));
|
||||
$queue->count_total = 2;
|
||||
$queue->save();
|
||||
$sending_queue_worker = $this->sending_queue_worker;
|
||||
@ -508,15 +481,12 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
);
|
||||
$sending_queue_worker->process();
|
||||
|
||||
$updated_queue = SendingQueue::findOne($queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($queue->id));
|
||||
// queue subscriber processed/to process count is updated
|
||||
$updated_queue->subscribers = $updated_queue->getSubscribers();
|
||||
expect($updated_queue->subscribers)->equals(
|
||||
array(
|
||||
'to_process' => array(),
|
||||
'processed' => array()
|
||||
)
|
||||
);
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED))
|
||||
->equals(array());
|
||||
expect($updated_queue->getSubscribers(ScheduledTaskSubscriber::STATUS_PROCESSED))
|
||||
->equals(array());
|
||||
expect($updated_queue->count_total)->equals(0);
|
||||
expect($updated_queue->count_processed)->equals(0);
|
||||
expect($updated_queue->count_to_process)->equals(0);
|
||||
@ -531,7 +501,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
|
||||
// newsletter is sent to existing subscriber
|
||||
$sending_queue_worker->process();
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect((int)$updated_queue->count_total)->equals(1);
|
||||
|
||||
// newsletter is not sent to trashed subscriber
|
||||
@ -541,7 +511,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
$subscriber->deleted_at = Carbon::now();
|
||||
$subscriber->save();
|
||||
$sending_queue_worker->process();
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect((int)$updated_queue->count_total)->equals(0);
|
||||
}
|
||||
|
||||
@ -559,7 +529,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
$subscriber->status = Subscriber::STATUS_UNSUBSCRIBED;
|
||||
$subscriber->save();
|
||||
$sending_queue_worker->process();
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect((int)$updated_queue->count_total)->equals(0);
|
||||
}
|
||||
|
||||
@ -577,7 +547,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
$subscriber_segment->status = Subscriber::STATUS_UNSUBSCRIBED;
|
||||
$subscriber_segment->save();
|
||||
$sending_queue_worker->process();
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
expect((int)$updated_queue->count_total)->equals(0);
|
||||
}
|
||||
|
||||
@ -632,6 +602,8 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Segment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
|
@ -10,9 +10,12 @@ use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\NewsletterPost;
|
||||
use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Router\Router;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
@ -38,7 +41,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
$this->parent_newsletter->body = 'parent body';
|
||||
$this->parent_newsletter->preheader = '';
|
||||
$this->parent_newsletter->save();
|
||||
$this->queue = SendingQueue::create();
|
||||
$this->queue = SendingTask::create();
|
||||
$this->queue->newsletter_id = $this->newsletter->id;
|
||||
$this->queue->save();
|
||||
}
|
||||
@ -129,7 +132,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
$newsletter_task->preProcessNewsletter($this->newsletter, $this->queue);
|
||||
$link = NewsletterLink::where('newsletter_id', $this->newsletter->id)
|
||||
->findOne();
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
$rendered_newsletter = $updated_queue->getNewsletterRenderedBody();
|
||||
expect($rendered_newsletter['html'])
|
||||
->contains('[mailpoet_click_data]-' . $link->hash);
|
||||
@ -150,7 +153,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
$link = NewsletterLink::where('newsletter_id', $this->newsletter->id)
|
||||
->findOne();
|
||||
expect($link)->false();
|
||||
$updated_queue = SendingQueue::findOne($this->queue->id);
|
||||
$updated_queue = SendingTask::createFromQueue(SendingQueue::findOne($this->queue->id));
|
||||
$rendered_newsletter = $updated_queue->getNewsletterRenderedBody();
|
||||
expect($rendered_newsletter['html'])
|
||||
->notContains('[mailpoet_click_data]');
|
||||
@ -277,9 +280,10 @@ class NewsletterTest extends \MailPoetTest {
|
||||
|
||||
function testItLogsErrorWhenExistingRenderedNewsletterBodyIsInvalid() {
|
||||
$queue_mock = Mock::double(
|
||||
new \stdClass(),
|
||||
$this->queue,
|
||||
array(
|
||||
'getNewsletterRenderedBody' => 'a:2:{s:4:"html"'
|
||||
'getNewsletterRenderedBody' => 'a:2:{s:4:"html"',
|
||||
'validate' => false
|
||||
)
|
||||
);
|
||||
try {
|
||||
@ -295,7 +299,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
function testItLogsErrorWhenNewlyRenderedNewsletterBodyIsInvalid() {
|
||||
$queue = $this->queue;
|
||||
$queue_mock = Mock::double(
|
||||
new \stdClass(),
|
||||
$this->queue,
|
||||
array(
|
||||
'getNewsletterRenderedBody' => null
|
||||
)
|
||||
@ -333,8 +337,10 @@ class NewsletterTest extends \MailPoetTest {
|
||||
|
||||
function _after() {
|
||||
WPHooksHelper::releaseAllHooks();
|
||||
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterPost::$_table);
|
||||
|
@ -4,6 +4,7 @@ namespace MailPoet\Test\Models;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
@ -12,6 +13,7 @@ use MailPoet\Models\StatisticsOpens;
|
||||
use MailPoet\Models\StatisticsClicks;
|
||||
use MailPoet\Models\StatisticsUnsubscribes;
|
||||
use MailPoet\Util\Security;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class NewsletterTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -37,7 +39,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
$association->segment_id = $this->segment_2->id;
|
||||
$association->save();
|
||||
|
||||
$this->sending_queue = SendingQueue::create();
|
||||
$this->sending_queue = SendingTask::create();
|
||||
$this->sending_queue->newsletter_id = $this->newsletter->id;
|
||||
$this->sending_queue->save();
|
||||
}
|
||||
@ -97,7 +99,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
|
||||
function testItCanBeQueued() {
|
||||
$queue = $this->newsletter->getQueue();
|
||||
expect($queue->id() > 0)->true();
|
||||
expect($queue->id > 0)->true();
|
||||
expect($queue->newsletter_id)->equals($this->newsletter->id);
|
||||
}
|
||||
|
||||
@ -303,7 +305,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'type' => $types[$i]
|
||||
)
|
||||
);
|
||||
$sending_queues[$i] = SendingQueue::create();
|
||||
$sending_queues[$i] = SendingTask::create();
|
||||
$sending_queues[$i]->newsletter_id = $newsletters[$i]->id;
|
||||
$sending_queues[$i]->status = SendingQueue::STATUS_COMPLETED;
|
||||
$sending_queues[$i]->save();
|
||||
@ -345,7 +347,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'type' => $types[$i]
|
||||
)
|
||||
);
|
||||
$sending_queues[$i] = SendingQueue::create();
|
||||
$sending_queues[$i] = SendingTask::create();
|
||||
$sending_queues[$i]->newsletter_id = $newsletters[$i]->id;
|
||||
$sending_queues[$i]->status = SendingQueue::STATUS_COMPLETED;
|
||||
$sending_queues[$i]->save();
|
||||
@ -436,7 +438,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
|
||||
// create multiple sending queues
|
||||
for($i = 1; $i <= 5; $i++) {
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
}
|
||||
@ -464,7 +466,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'parent_id' => $parent_newsletter->id
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
$newsletter_segment = NewsletterSegment::create();
|
||||
@ -490,7 +492,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
// create multiple sending queues
|
||||
$newsletter = $this->newsletter;
|
||||
for($i = 1; $i <= 5; $i++) {
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
}
|
||||
@ -513,7 +515,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'parent_id' => $parent_newsletter->id
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
}
|
||||
@ -532,7 +534,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
// create multiple sending queues
|
||||
$newsletter = $this->newsletter;
|
||||
for($i = 1; $i <= 5; $i++) {
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
||||
$sending_queue->save();
|
||||
@ -564,7 +566,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'deleted_at' => date('Y-m-d H:i:s')
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
||||
$sending_queue->save();
|
||||
@ -589,7 +591,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'type' => Newsletter::TYPE_STANDARD
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
}
|
||||
@ -613,7 +615,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'parent_id' => $this->newsletter->id,
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
}
|
||||
@ -637,7 +639,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'deleted_at' => date('Y-m-d H:i:s')
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
||||
$sending_queue->save();
|
||||
@ -663,7 +665,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'deleted_at' => date('Y-m-d H:i:s')
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
||||
$sending_queue->save();
|
||||
@ -687,7 +689,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'type' => Newsletter::TYPE_STANDARD
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
$newsletter_segment = NewsletterSegment::create();
|
||||
@ -719,7 +721,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
'parent_id' => $this->newsletter->id
|
||||
)
|
||||
);
|
||||
$sending_queue = SendingQueue::create();
|
||||
$sending_queue = SendingTask::create();
|
||||
$sending_queue->newsletter_id = $newsletter->id;
|
||||
$sending_queue->save();
|
||||
$newsletter_segment = NewsletterSegment::create();
|
||||
@ -769,6 +771,7 @@ class NewsletterTest extends \MailPoetTest {
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Segment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterSegment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . StatisticsOpens::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . StatisticsClicks::$_table);
|
||||
|
@ -9,6 +9,7 @@ use MailPoet\Util\Helpers;
|
||||
class SendingQueueTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
$this->queue = SendingQueue::create();
|
||||
$this->queue->task_id = 0;
|
||||
$this->queue->newsletter_id = 1;
|
||||
$this->queue->save();
|
||||
|
||||
@ -64,6 +65,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
'html' => 'html',
|
||||
'text' => 'text'
|
||||
);
|
||||
$queue->task_id = 0;
|
||||
$queue->newsletter_id = 1;
|
||||
$queue->newsletter_rendered_body = $data;
|
||||
$queue->save();
|
||||
|
@ -8,6 +8,7 @@ use MailPoet\Models\CustomField;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Setting;
|
||||
@ -473,8 +474,8 @@ class SubscriberTest extends \MailPoetTest {
|
||||
$subscriber = Subscriber::subscribe($this->data, array($segment->id()));
|
||||
expect($subscriber->id() > 0)->equals(true);
|
||||
expect($subscriber->segments()->count())->equals(1);
|
||||
$scheduled_notification = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
->where('status', SendingQueue::STATUS_SCHEDULED)
|
||||
$scheduled_notification = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->where('tasks.status', SendingQueue::STATUS_SCHEDULED)
|
||||
->findOne();
|
||||
expect($scheduled_notification)->notEmpty();
|
||||
}
|
||||
@ -520,10 +521,10 @@ class SubscriberTest extends \MailPoetTest {
|
||||
$subscriber = Subscriber::subscribe($this->data, array($segment->id()));
|
||||
expect($subscriber->id() > 0)->equals(true);
|
||||
expect($subscriber->segments()->count())->equals(1);
|
||||
$scheduled_notification = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
->where('status', SendingQueue::STATUS_SCHEDULED)
|
||||
$scheduled_notification = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->where('tasks.status', SendingQueue::STATUS_SCHEDULED)
|
||||
->findOne();
|
||||
expect($scheduled_notification)->notEmpty();
|
||||
expect($scheduled_notification)->isEmpty();
|
||||
}
|
||||
|
||||
function testItCannotSubscribeWithReservedColumns() {
|
||||
@ -1151,12 +1152,16 @@ class SubscriberTest extends \MailPoetTest {
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Segment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . CustomField::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SubscriberCustomField::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||
}
|
||||
}
|
@ -6,8 +6,10 @@ use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\NewsletterPost;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class SchedulerTest extends \MailPoetTest {
|
||||
function testItSetsConstants() {
|
||||
@ -79,9 +81,9 @@ class SchedulerTest extends \MailPoetTest {
|
||||
'afterTimeType' => 'hours'
|
||||
);
|
||||
$existing_subscriber = 678;
|
||||
$existing_queue = SendingQueue::create();
|
||||
$existing_queue = SendingTask::create();
|
||||
$existing_queue->newsletter_id = $newsletter->id;
|
||||
$existing_queue->subscribers = array('to_process' => array($existing_subscriber));
|
||||
$existing_queue->setSubscribers(array($existing_subscriber));
|
||||
$existing_queue->save();
|
||||
|
||||
// queue is not scheduled
|
||||
@ -102,7 +104,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
// queue is scheduled delivery in 2 hours
|
||||
$newsletter->afterTimeType = 'hours';
|
||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
||||
$queue = SendingQueue::where('newsletter_id', 1)
|
||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||
->findOne();
|
||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
expect($queue->id)->greaterOrEquals(1);
|
||||
@ -115,7 +117,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$newsletter->afterTimeType = 'days';
|
||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
$queue = SendingQueue::where('newsletter_id', 1)
|
||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||
->findOne();
|
||||
expect($queue->id)->greaterOrEquals(1);
|
||||
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
|
||||
@ -127,7 +129,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$newsletter->afterTimeType = 'weeks';
|
||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
$queue = SendingQueue::where('newsletter_id', 1)
|
||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||
->findOne();
|
||||
expect($queue->id)->greaterOrEquals(1);
|
||||
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
|
||||
@ -139,7 +141,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$newsletter->afterTimeType = null;
|
||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
$queue = SendingQueue::where('newsletter_id', 1)
|
||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||
->findOne();
|
||||
expect($queue->id)->greaterOrEquals(1);
|
||||
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
|
||||
@ -156,7 +158,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
|
||||
// queue is not created when notification was already sent for the post
|
||||
Scheduler::schedulePostNotification($post_id = 10);
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect($queue)->false();
|
||||
}
|
||||
@ -177,7 +179,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$next_run_date = ($current_time->hour < 5) ?
|
||||
$current_time :
|
||||
$current_time->addDay();
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect($queue->scheduled_at)->equals($next_run_date->format('Y-m-d 05:00:00'));
|
||||
}
|
||||
@ -191,7 +193,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
);
|
||||
|
||||
// queue is not created
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect($queue)->false();
|
||||
}
|
||||
@ -219,7 +221,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
)
|
||||
);
|
||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
|
||||
->equals($current_time->addDay()->format('Y-m-d H:i'));
|
||||
@ -263,7 +265,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
);
|
||||
|
||||
// queue is not created
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect($queue)->false();
|
||||
}
|
||||
@ -286,7 +288,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
);
|
||||
|
||||
// queue is not created
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect($queue)->false();
|
||||
}
|
||||
@ -310,7 +312,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
|
||||
// queue is created and scheduled for delivery one day later
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
|
||||
->equals($current_time->addDay()->format('Y-m-d H:i'));
|
||||
@ -335,7 +337,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||
|
||||
// queue is created and scheduled for delivery one day later
|
||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
$queue = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->findOne();
|
||||
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
|
||||
->equals($current_time->addDay()->format('Y-m-d H:i'));
|
||||
@ -439,7 +441,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$scheduled_at = null,
|
||||
$status = SendingQueue::STATUS_SCHEDULED
|
||||
) {
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->status = $status;
|
||||
$queue->newsletter_id = $newsletter_id;
|
||||
$queue->scheduled_at = $scheduled_at;
|
||||
@ -482,6 +484,7 @@ class SchedulerTest extends \MailPoetTest {
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterPost::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
}
|
||||
}
|
@ -3,12 +3,14 @@ namespace MailPoet\Test\Newsletter;
|
||||
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\Links\Links;
|
||||
use MailPoet\Newsletter\ViewInBrowser;
|
||||
use MailPoet\Router\Router;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class ViewInBrowserTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -80,10 +82,10 @@ class ViewInBrowserTest extends \MailPoetTest {
|
||||
$subscriber->last_name = 'Last';
|
||||
$this->subscriber = $subscriber->save();
|
||||
// create queue
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->newsletter_rendered_body = $this->queue_rendered_newsletter_without_tracking;
|
||||
$queue->subscribers = array('processed' => array($subscriber->id));
|
||||
$queue->setSubscribers(array($subscriber->id));
|
||||
$this->queue = $queue->save();
|
||||
// create newsletter link associations
|
||||
$newsletter_link_1 = NewsletterLink::create();
|
||||
@ -177,6 +179,7 @@ class ViewInBrowserTest extends \MailPoetTest {
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
}
|
||||
}
|
||||
|
@ -3,9 +3,12 @@ namespace MailPoet\Test\Router\Endpoints;
|
||||
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Router\Endpoints\Track;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class TrackTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -20,9 +23,10 @@ class TrackTest extends \MailPoetTest {
|
||||
$subscriber->last_name = 'Last';
|
||||
$this->subscriber = $subscriber->save();
|
||||
// create queue
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->subscribers = array('processed' => array($subscriber->id));
|
||||
$queue->setSubscribers(array($subscriber->id));
|
||||
$queue->updateProcessedSubscribers(array($subscriber->id));
|
||||
$this->queue = $queue->save();
|
||||
// create link
|
||||
$link = NewsletterLink::create();
|
||||
@ -127,10 +131,10 @@ class TrackTest extends \MailPoetTest {
|
||||
$newsletter = Newsletter::create();
|
||||
$newsletter->type = 'type';
|
||||
$newsletter = $newsletter->save();
|
||||
$queue = SendingQueue::create();
|
||||
$queue->id = 123;
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->subscribers = array('processed' => array($this->subscriber->id));
|
||||
$queue->setSubscribers(array($this->subscriber->id));
|
||||
$queue->updateProcessedSubscribers(array($this->subscriber->id));
|
||||
$queue->save();
|
||||
$track_data = $this->track_data;
|
||||
$track_data['queue_id'] = $queue->id;
|
||||
@ -155,6 +159,9 @@ class TrackTest extends \MailPoetTest {
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
}
|
||||
}
|
@ -5,9 +5,11 @@ namespace MailPoet\Test\Router\Endpoints;
|
||||
use Codeception\Util\Stub;
|
||||
use MailPoet\Config\AccessControl;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Router\Endpoints\ViewInBrowser;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class ViewInBrowserTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -22,9 +24,10 @@ class ViewInBrowserTest extends \MailPoetTest {
|
||||
$subscriber->last_name = 'Last';
|
||||
$this->subscriber = $subscriber->save();
|
||||
// create queue
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->subscribers = array('processed' => array($subscriber->id));
|
||||
$queue->setSubscribers(array($subscriber->id));
|
||||
$queue->updateProcessedSubscribers(array($subscriber->id));
|
||||
$this->queue = $queue->save();
|
||||
// build browser preview data
|
||||
$this->browser_preview_data = array(
|
||||
@ -118,7 +121,8 @@ class ViewInBrowserTest extends \MailPoetTest {
|
||||
$result = $this->view_in_browser->_validateBrowserPreviewData($data);
|
||||
expect($result)->notEmpty();
|
||||
$queue = $this->queue;
|
||||
$queue->subscribers = array('processed' => array());
|
||||
$queue->setSubscribers(array());
|
||||
$queue->updateProcessedSubscribers(array());
|
||||
$queue->save();
|
||||
$result = $this->view_in_browser->_validateBrowserPreviewData($data);
|
||||
expect($result)->false();
|
||||
@ -205,6 +209,7 @@ class ViewInBrowserTest extends \MailPoetTest {
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
// reset WP user role
|
||||
$wp_user = wp_get_current_user();
|
||||
|
@ -4,11 +4,13 @@ namespace MailPoet\Test\Statistics\Track;
|
||||
use Codeception\Util\Stub;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\StatisticsClicks;
|
||||
use MailPoet\Models\StatisticsOpens;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Statistics\Track\Clicks;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class ClicksTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -23,9 +25,10 @@ class ClicksTest extends \MailPoetTest {
|
||||
$subscriber->last_name = 'Last';
|
||||
$this->subscriber = $subscriber->save();
|
||||
// create queue
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->subscribers = array('processed' => array($subscriber->id));
|
||||
$queue->setSubscribers(array($subscriber->id));
|
||||
$queue->updateProcessedSubscribers(array($subscriber->id));
|
||||
$this->queue = $queue->save();
|
||||
// create link
|
||||
$link = NewsletterLink::create();
|
||||
@ -151,6 +154,7 @@ class ClicksTest extends \MailPoetTest {
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . StatisticsOpens::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . StatisticsClicks::$_table);
|
||||
|
@ -3,10 +3,12 @@ namespace MailPoet\Test\Statistics\Track;
|
||||
|
||||
use Codeception\Util\Stub;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\StatisticsOpens;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Statistics\Track\Opens;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class OpensTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -21,9 +23,10 @@ class OpensTest extends \MailPoetTest {
|
||||
$subscriber->last_name = 'Last';
|
||||
$this->subscriber = $subscriber->save();
|
||||
// create queue
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->subscribers = array('processed' => array($subscriber->id));
|
||||
$queue->setSubscribers(array($subscriber->id));
|
||||
$queue->updateProcessedSubscribers(array($subscriber->id));
|
||||
$this->queue = $queue->save();
|
||||
// build track data
|
||||
$this->track_data = (object)array(
|
||||
@ -88,6 +91,7 @@ class OpensTest extends \MailPoetTest {
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . StatisticsOpens::$_table);
|
||||
}
|
||||
|
@ -2,10 +2,12 @@
|
||||
namespace MailPoet\Test\Statistics\Track;
|
||||
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\StatisticsUnsubscribes;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Statistics\Track\Unsubscribes;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class UnsubscribesTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
@ -20,9 +22,10 @@ class UnsubscribesTest extends \MailPoetTest {
|
||||
$subscriber->last_name = 'Last';
|
||||
$this->subscriber = $subscriber->save();
|
||||
// create queue
|
||||
$queue = SendingQueue::create();
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->subscribers = array('processed' => array($subscriber->id));
|
||||
$queue->setSubscribers(array($subscriber->id));
|
||||
$queue->updateProcessedSubscribers(array($subscriber->id));
|
||||
$this->queue = $queue->save();
|
||||
// instantiate class
|
||||
$this->unsubscribes = new Unsubscribes();
|
||||
|
@ -5,6 +5,7 @@ use Codeception\Util\Fixtures;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Subscriber;
|
||||
@ -83,14 +84,15 @@ class PagesTest extends \MailPoetTest {
|
||||
|
||||
// confirm subscription and ensure that welcome email is scheduled
|
||||
$this->subscription->confirm();
|
||||
$scheduled_notification = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
->where('status', SendingQueue::STATUS_SCHEDULED)
|
||||
$scheduled_notification = SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->where('tasks.status', SendingQueue::STATUS_SCHEDULED)
|
||||
->findOne();
|
||||
expect($scheduled_notification)->notEmpty();
|
||||
}
|
||||
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . Segment::$_table);
|
||||
|
Reference in New Issue
Block a user