diff --git a/lib/Cron/Workers/Scheduler.php b/lib/Cron/Workers/Scheduler.php index 92646c65a2..c03859d482 100644 --- a/lib/Cron/Workers/Scheduler.php +++ b/lib/Cron/Workers/Scheduler.php @@ -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( diff --git a/tests/unit/Cron/Workers/SchedulerTest.php b/tests/unit/Cron/Workers/SchedulerTest.php index 7a6b78d7be..d02d969e49 100644 --- a/tests/unit/Cron/Workers/SchedulerTest.php +++ b/tests/unit/Cron/Workers/SchedulerTest.php @@ -1,6 +1,7 @@ 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);