Check processed subscribers for old and new queues differently [MAILPOET-903]
This commit is contained in:
@ -65,6 +65,20 @@ class SendingQueue extends Model {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used only for checking processed subscribers in old queues
|
||||||
|
*/
|
||||||
|
private function getSubscribers() {
|
||||||
|
if(!is_serialized($this->subscribers)) {
|
||||||
|
return $this->subscribers;
|
||||||
|
}
|
||||||
|
$subscribers = unserialize($this->subscribers);
|
||||||
|
if(empty($subscribers['processed'])) {
|
||||||
|
$subscribers['processed'] = array();
|
||||||
|
}
|
||||||
|
return $subscribers;
|
||||||
|
}
|
||||||
|
|
||||||
function getNewsletterRenderedBody($type = false) {
|
function getNewsletterRenderedBody($type = false) {
|
||||||
$rendered_newsletter = $this->decodeRenderedNewsletterBodyObject($this->newsletter_rendered_body);
|
$rendered_newsletter = $this->decodeRenderedNewsletterBodyObject($this->newsletter_rendered_body);
|
||||||
return ($type && !empty($rendered_newsletter[$type])) ?
|
return ($type && !empty($rendered_newsletter[$type])) ?
|
||||||
@ -95,9 +109,19 @@ class SendingQueue extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function isSubscriberProcessed($subscriber_id) {
|
function isSubscriberProcessed($subscriber_id) {
|
||||||
$task_subscribers = new TaskSubscribers($this->task()->findOne());
|
if(!empty($this->subscribers)
|
||||||
|
&& ScheduledTaskSubscriber::getTotalCount($this->task_id) === 0
|
||||||
|
) {
|
||||||
|
$subscribers = $this->getSubscribers();
|
||||||
|
return in_array($subscriber_id, $subscribers['processed']);
|
||||||
|
} else {
|
||||||
|
if($task = $this->task()->findOne()) {
|
||||||
|
$task_subscribers = new TaskSubscribers($task);
|
||||||
return $task_subscribers->isSubscriberProcessed($subscriber_id);
|
return $task_subscribers->isSubscriberProcessed($subscriber_id);
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function asArray() {
|
function asArray() {
|
||||||
$model = parent::asArray();
|
$model = parent::asArray();
|
||||||
|
@ -3,7 +3,10 @@
|
|||||||
namespace MailPoet\Test\Models;
|
namespace MailPoet\Test\Models;
|
||||||
|
|
||||||
use AspectMock\Test as Mock;
|
use AspectMock\Test as Mock;
|
||||||
|
use MailPoet\Models\ScheduledTask;
|
||||||
|
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
|
|
||||||
class SendingQueueTest extends \MailPoetTest {
|
class SendingQueueTest extends \MailPoetTest {
|
||||||
@ -39,6 +42,23 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$mock->verifyInvokedMultipleTimes('decodeEntities', 2);
|
$mock->verifyInvokedMultipleTimes('decodeEntities', 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItChecksProcessedSubscribersForOldQueues() {
|
||||||
|
$subscriber_id = 123;
|
||||||
|
expect($this->queue->isSubscriberProcessed($subscriber_id))->false();
|
||||||
|
$this->queue->subscribers = array('processed' => array($subscriber_id));
|
||||||
|
expect($this->queue->isSubscriberProcessed($subscriber_id))->true();
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItChecksProcessedSubscribersForNewQueues() {
|
||||||
|
$subscriber_id = 123;
|
||||||
|
$queue = SendingTask::create();
|
||||||
|
$queue->setSubscribers(array($subscriber_id));
|
||||||
|
$queue->save();
|
||||||
|
expect($queue->isSubscriberProcessed($subscriber_id))->false();
|
||||||
|
$queue->updateProcessedSubscribers(array($subscriber_id));
|
||||||
|
expect($queue->isSubscriberProcessed($subscriber_id))->true();
|
||||||
|
}
|
||||||
|
|
||||||
function testItReadsSerializedRenderedNewsletterBody() {
|
function testItReadsSerializedRenderedNewsletterBody() {
|
||||||
$queue = $this->queue;
|
$queue = $this->queue;
|
||||||
$data = array(
|
$data = array(
|
||||||
@ -99,6 +119,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
Mock::clean();
|
Mock::clean();
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||||
|
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
|
||||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user