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