- Updates models' delete() method to delete parent newsletter
- Updates unit tests
This commit is contained in:
@@ -52,6 +52,13 @@ class SendingQueue extends Model {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function delete() {
|
||||||
|
if($parent_newsletter = $this->newsletter()->findOne()) {
|
||||||
|
$parent_newsletter->delete();
|
||||||
|
};
|
||||||
|
return parent::delete();
|
||||||
|
}
|
||||||
|
|
||||||
function getSubscribers() {
|
function getSubscribers() {
|
||||||
if(!is_serialized($this->subscribers)) {
|
if(!is_serialized($this->subscribers)) {
|
||||||
return $this->subscribers;
|
return $this->subscribers;
|
||||||
|
@@ -20,7 +20,7 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
expect(Scheduler::UNCONFIRMED_SUBSCRIBER_RESCHEDULE_TIMEOUT)->equals(5);
|
expect(Scheduler::UNCONFIRMED_SUBSCRIBER_RESCHEDULE_TIMEOUT)->equals(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItConstructs() {
|
function testItConstructs() {
|
||||||
$scheduler = new Scheduler();
|
$scheduler = new Scheduler();
|
||||||
expect($scheduler->timer)->greaterOrEquals(5);
|
expect($scheduler->timer)->greaterOrEquals(5);
|
||||||
$timer = microtime(true) - 2;
|
$timer = microtime(true) - 2;
|
||||||
@@ -67,28 +67,38 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
expect($notification_history)->notEmpty();
|
expect($notification_history)->notEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanDeleteQueueOrChangeItsNextRunDate() {
|
function testItCanDeleteQueueWhenDeliveryIsSetToImmediately() {
|
||||||
$WP_user = $this->_createOrUpdateWPUser('editor');
|
|
||||||
$newsletter = $this->_createNewsletter();
|
$newsletter = $this->_createNewsletter();
|
||||||
$newsletter_option_field = $this->_createNewsletterOptionField('intervalType', Newsletter::TYPE_WELCOME);
|
$newsletter_option_field =
|
||||||
|
$this->_createNewsletterOptionField('intervalType', Newsletter::TYPE_WELCOME);
|
||||||
$newsletter_option = $this->_createNewsletterOption($newsletter_option_field->id, $newsletter->id, 'immediately');
|
$newsletter_option = $this->_createNewsletterOption($newsletter_option_field->id, $newsletter->id, 'immediately');
|
||||||
$newsletter = Newsletter::filter('filterWithOptions')
|
$newsletter = Newsletter::filter('filterWithOptions')
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler();
|
$scheduler = new Scheduler();
|
||||||
|
|
||||||
// queue should be deleted when interval type is set to "immediately"
|
// queue and associated newsletter should be deleted when interval type is set to "immediately"
|
||||||
expect(SendingQueue::findMany())->notEmpty();
|
expect(SendingQueue::findMany())->notEmpty();
|
||||||
$scheduler->deleteQueueOrUpdateNextRunDate($queue, $newsletter);
|
$scheduler->deleteQueueOrUpdateNextRunDate($queue, $newsletter);
|
||||||
expect(count(SendingQueue::findMany()))->equals(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItCanRescheduleQueueDeliveryTime() {
|
||||||
|
$newsletter = $this->_createNewsletter();
|
||||||
|
$newsletter_option_field =
|
||||||
|
$this->_createNewsletterOptionField('intervalType', Newsletter::TYPE_WELCOME);
|
||||||
|
$newsletter_option = $this->_createNewsletterOption($newsletter_option_field->id, $newsletter->id, 'daily');
|
||||||
|
$newsletter = Newsletter::filter('filterWithOptions')
|
||||||
|
->findOne($newsletter->id);
|
||||||
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
|
$scheduler = new Scheduler();
|
||||||
|
|
||||||
// queue's next run date should change when interval type is set to anything
|
// queue's next run date should change when interval type is set to anything
|
||||||
// other than "immediately"
|
// other than "immediately"
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$newsletter_option->value = 'daily';
|
$newsletter_option->value = 'daily';
|
||||||
$newsletter_option->save();
|
$newsletter_option->save();
|
||||||
$newsletter = Newsletter::filter('filterWithOptions')
|
$newsletter = Newsletter::filter('filterWithOptions')->findOne($newsletter->id);
|
||||||
->findOne($newsletter->id);
|
|
||||||
expect($queue->scheduled_at)->null();
|
expect($queue->scheduled_at)->null();
|
||||||
$newsletter->schedule = '0 5 * * *'; // set it to daily at 5
|
$newsletter->schedule = '0 5 * * *'; // set it to daily at 5
|
||||||
$scheduler->deleteQueueOrUpdateNextRunDate($queue, $newsletter);
|
$scheduler->deleteQueueOrUpdateNextRunDate($queue, $newsletter);
|
||||||
@@ -116,7 +126,7 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
// return false and delete queue when subscriber is not a WP user
|
// return false and delete queue when subscriber is not a WP user
|
||||||
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyWPSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
expect($result)->false();
|
expect($result)->false();
|
||||||
expect(count(SendingQueue::findMany()))->equals(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItFailsWPSubscriberVerificationWhenSubscriberRoleDoesNotMatch() {
|
function testItFailsWPSubscriberVerificationWhenSubscriberRoleDoesNotMatch() {
|
||||||
@@ -193,7 +203,7 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
$scheduler = new Scheduler();
|
$scheduler = new Scheduler();
|
||||||
$result = $scheduler->processWelcomeNewsletter($newsletter, $queue);
|
$result = $scheduler->processWelcomeNewsletter($newsletter, $queue);
|
||||||
expect($result)->false();
|
expect($result)->false();
|
||||||
expect(count(SendingQueue::findMany()))->equals(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDoesNotProcessWelcomeNewsletterWhenWPUserCannotBeVerified() {
|
function testItDoesNotProcessWelcomeNewsletterWhenWPUserCannotBeVerified() {
|
||||||
@@ -264,7 +274,7 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
$result = $scheduler->verifyMailpoetSubscriber(null, $newsletter, $queue);
|
$result = $scheduler->verifyMailpoetSubscriber(null, $newsletter, $queue);
|
||||||
expect($result)->false();
|
expect($result)->false();
|
||||||
// delete queue when subscriber can't be found
|
// delete queue when subscriber can't be found
|
||||||
expect(count(SendingQueue::findMany()))->equals(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItFailsMailpoetSubscriberVerificationWhenSubscriberIsNotInSegment() {
|
function testItFailsMailpoetSubscriberVerificationWhenSubscriberIsNotInSegment() {
|
||||||
@@ -282,7 +292,7 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
$result = $scheduler->verifyMailpoetSubscriber($subscriber->id, $newsletter, $queue);
|
||||||
expect($result)->false();
|
expect($result)->false();
|
||||||
// delete queue when subscriber is not in segment specified for the newsletter
|
// delete queue when subscriber is not in segment specified for the newsletter
|
||||||
expect(count(SendingQueue::findMany()))->equals(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItReschedulesQueueDeliveryWhenMailpoetSubscriberHasNotConfirmedSubscription() {
|
function testItReschedulesQueueDeliveryWhenMailpoetSubscriberHasNotConfirmedSubscription() {
|
||||||
@@ -426,7 +436,7 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
$queue->save();
|
$queue->save();
|
||||||
$scheduler = new Scheduler();
|
$scheduler = new Scheduler();
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
expect(count(SendingQueue::findMany()))->equals(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDeletesQueueDuringProcessingWhenNewsletterIsSoftDeleted() {
|
function testItDeletesQueueDuringProcessingWhenNewsletterIsSoftDeleted() {
|
||||||
@@ -438,7 +448,7 @@ class SchedulerTest extends MailPoetTest {
|
|||||||
$queue->save();
|
$queue->save();
|
||||||
$scheduler = new Scheduler();
|
$scheduler = new Scheduler();
|
||||||
$scheduler->process();
|
$scheduler->process();
|
||||||
expect(count(SendingQueue::findMany()))->equals(0);
|
expect(SendingQueue::findMany())->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItProcessesWelcomeNewsletters() {
|
function testItProcessesWelcomeNewsletters() {
|
||||||
|
28
tests/unit/Models/SendingQueueTest.php
Normal file
28
tests/unit/Models/SendingQueueTest.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use MailPoet\Models\Newsletter;
|
||||||
|
use MailPoet\Models\SendingQueue;
|
||||||
|
|
||||||
|
class SendingQueueModelTest extends MailPoetTest {
|
||||||
|
function _before() {
|
||||||
|
$this->newsletter = Newsletter::create();
|
||||||
|
$this->newsletter->type = Newsletter::TYPE_STANDARD;
|
||||||
|
$this->newsletter->save();
|
||||||
|
expect(Newsletter::findMany())->count(1);
|
||||||
|
$this->sending_queue = SendingQueue::create();
|
||||||
|
$this->sending_queue->newsletter_id = $this->newsletter->id;
|
||||||
|
$this->sending_queue->save();
|
||||||
|
expect(SendingQueue::findMany())->count(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItDeletesParentNewsletter() {
|
||||||
|
$this->sending_queue->delete();
|
||||||
|
expect(Newsletter::findMany())->count(0);
|
||||||
|
expect(SendingQueue::findMany())->count(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||||
|
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user