Merge pull request #1257 from mailpoet/scheduled_emails_to_dynamic_segments_fix
Fix sending of scheduled standard emails to dynamic segments [MAILPOET-1286]
This commit is contained in:
@ -106,10 +106,8 @@ class Scheduler {
|
|||||||
|
|
||||||
function processScheduledStandardNewsletter($newsletter, $queue) {
|
function processScheduledStandardNewsletter($newsletter, $queue) {
|
||||||
$segments = $newsletter->segments()->findArray();
|
$segments = $newsletter->segments()->findArray();
|
||||||
$segment_ids = array_map(function($segment) {
|
$finder = new SubscribersFinder();
|
||||||
return $segment['id'];
|
$subscribers = $finder->getSubscribersByList($segments);
|
||||||
}, $segments);
|
|
||||||
$subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray();
|
|
||||||
$subscribers = Helpers::flattenArray($subscribers);
|
$subscribers = Helpers::flattenArray($subscribers);
|
||||||
// update current queue
|
// update current queue
|
||||||
$queue->subscribers = serialize(
|
$queue->subscribers = serialize(
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Test\Cron\Workers;
|
namespace MailPoet\Test\Cron\Workers;
|
||||||
|
|
||||||
|
use AspectMock\Test as Mock;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Codeception\Util\Stub;
|
use Codeception\Util\Stub;
|
||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
@ -363,6 +364,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$queue = $this->_createQueue($newsletter->id);
|
$queue = $this->_createQueue($newsletter->id);
|
||||||
$scheduler = new Scheduler();
|
$scheduler = new Scheduler();
|
||||||
|
$finder = Mock::double('MailPoet\Segments\SubscribersFinder');
|
||||||
|
|
||||||
// return true
|
// return true
|
||||||
expect($scheduler->processScheduledStandardNewsletter($newsletter, $queue))->true();
|
expect($scheduler->processScheduledStandardNewsletter($newsletter, $queue))->true();
|
||||||
@ -375,6 +377,8 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
// set newsletter's status to sending
|
// set newsletter's status to sending
|
||||||
$updated_newsletter = Newsletter::findOne($newsletter->id);
|
$updated_newsletter = Newsletter::findOne($newsletter->id);
|
||||||
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENDING);
|
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENDING);
|
||||||
|
// SubscribersFinder is used for getting subscribers
|
||||||
|
$finder->verifyInvoked('getSubscribersByList');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItFailsToProcessPostNotificationNewsletterWhenSegmentsDontExist() {
|
function testItFailsToProcessPostNotificationNewsletterWhenSegmentsDontExist() {
|
||||||
@ -421,6 +425,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$newsletter = Newsletter::filter('filterWithOptions')
|
$newsletter = Newsletter::filter('filterWithOptions')
|
||||||
->findOne($newsletter->id);
|
->findOne($newsletter->id);
|
||||||
$scheduler = new Scheduler();
|
$scheduler = new Scheduler();
|
||||||
|
$finder = Mock::double('MailPoet\Segments\SubscribersFinder');
|
||||||
|
|
||||||
// return true
|
// return true
|
||||||
expect($scheduler->processPostNotificationNewsletter($newsletter, $queue))->true();
|
expect($scheduler->processPostNotificationNewsletter($newsletter, $queue))->true();
|
||||||
@ -438,6 +443,8 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$updated_notification_history = Newsletter::where('parent_id', $newsletter->id)
|
$updated_notification_history = Newsletter::where('parent_id', $newsletter->id)
|
||||||
->findOne();
|
->findOne();
|
||||||
expect($updated_notification_history->status)->equals(Newsletter::STATUS_SENDING);
|
expect($updated_notification_history->status)->equals(Newsletter::STATUS_SENDING);
|
||||||
|
// SubscribersFinder is used for getting subscribers
|
||||||
|
$finder->verifyInvoked('getSubscribersByList');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItFailsToProcessWhenScheduledQueuesNotFound() {
|
function testItFailsToProcessWhenScheduledQueuesNotFound() {
|
||||||
@ -662,6 +669,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
|
Mock::clean();
|
||||||
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
\ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||||
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||||
|
Reference in New Issue
Block a user