- Saves welcome emails with high priority

- Fixes welcome emails not being sent to WP users
- Updates unit tests
This commit is contained in:
Vlad
2016-11-28 12:05:21 -05:00
parent e72a8efbd4
commit 5bc17f5e76
3 changed files with 16 additions and 10 deletions

View File

@@ -53,10 +53,10 @@ class Scheduler {
if(empty($newsletters)) return false; if(empty($newsletters)) return false;
foreach($newsletters as $newsletter) { foreach($newsletters as $newsletter) {
if($newsletter->event === 'user') { if($newsletter->event === 'user') {
if($old_user_data) { if(!empty($old_user_data['roles'])) {
// do not schedule welcome newsletter if roles have not changed // do not schedule welcome newsletter if roles have not changed
$old_role = (array)$old_user_data->roles; $old_role = $old_user_data['roles'];
$new_role = (array)$wp_user->roles; $new_role = $wp_user['roles'];
if($newsletter->role === self::WORDPRESS_ALL_ROLES || if($newsletter->role === self::WORDPRESS_ALL_ROLES ||
!array_diff($old_role, $new_role) !array_diff($old_role, $new_role)
) { ) {
@@ -64,7 +64,7 @@ class Scheduler {
} }
} }
if($newsletter->role === self::WORDPRESS_ALL_ROLES || if($newsletter->role === self::WORDPRESS_ALL_ROLES ||
in_array($newsletter->role, (array)$wp_user->roles) in_array($newsletter->role, $wp_user['roles'])
) { ) {
self::createWelcomeNotificationQueue($newsletter, $subscriber_id); self::createWelcomeNotificationQueue($newsletter, $subscriber_id);
} }
@@ -99,6 +99,7 @@ class Scheduler {
$scheduled_at = $current_time; $scheduled_at = $current_time;
} }
$queue->status = SendingQueue::STATUS_SCHEDULED; $queue->status = SendingQueue::STATUS_SCHEDULED;
$queue->priority = SendingQueue::PRIORITY_HIGH;
$queue->scheduled_at = $scheduled_at; $queue->scheduled_at = $scheduled_at;
return $queue->save(); return $queue->save();
} }

View File

@@ -74,7 +74,7 @@ class WP {
Scheduler::scheduleWPUserWelcomeNotification( Scheduler::scheduleWPUserWelcomeNotification(
$subscriber->id, $subscriber->id,
(array)$wp_user, (array)$wp_user,
$old_wp_user_data (array)$old_wp_user_data
); );
} }
} }

View File

@@ -54,6 +54,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
expect($queue->newsletter_id)->equals($newsletter->id); expect($queue->newsletter_id)->equals($newsletter->id);
expect($queue->status)->equals(SendingQueue::STATUS_SCHEDULED); expect($queue->status)->equals(SendingQueue::STATUS_SCHEDULED);
expect($queue->scheduled_at)->equals(Scheduler::getNextRunDate('* 5 * * *')); expect($queue->scheduled_at)->equals(Scheduler::getNextRunDate('* 5 * * *'));
expect($queue->priority)->equals(SendingQueue::PRIORITY_MEDIUM);
// duplicate queue record should not be created // duplicate queue record should not be created
Scheduler::createPostNotificationQueue($newsletter); Scheduler::createPostNotificationQueue($newsletter);
@@ -73,6 +74,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
->findOne(); ->findOne();
$current_time = Carbon::createFromTimestamp(current_time('timestamp')); $current_time = Carbon::createFromTimestamp(current_time('timestamp'));
expect($queue->id)->greaterOrEquals(1); expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i')) expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->addHours(2)->format('Y-m-d H:i')); ->equals($current_time->addHours(2)->format('Y-m-d H:i'));
$this->_after(); $this->_after();
@@ -84,6 +86,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
$queue = SendingQueue::where('newsletter_id', 1) $queue = SendingQueue::where('newsletter_id', 1)
->findOne(); ->findOne();
expect($queue->id)->greaterOrEquals(1); expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i')) expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->addDays(2)->format('Y-m-d H:i')); ->equals($current_time->addDays(2)->format('Y-m-d H:i'));
$this->_after(); $this->_after();
@@ -95,6 +98,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
$queue = SendingQueue::where('newsletter_id', 1) $queue = SendingQueue::where('newsletter_id', 1)
->findOne(); ->findOne();
expect($queue->id)->greaterOrEquals(1); expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i')) expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->addWeeks(2)->format('Y-m-d H:i')); ->equals($current_time->addWeeks(2)->format('Y-m-d H:i'));
$this->_after(); $this->_after();
@@ -106,6 +110,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
$queue = SendingQueue::where('newsletter_id', 1) $queue = SendingQueue::where('newsletter_id', 1)
->findOne(); ->findOne();
expect($queue->id)->greaterOrEquals(1); expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i')) expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->format('Y-m-d H:i')); ->equals($current_time->format('Y-m-d H:i'));
} }
@@ -221,8 +226,8 @@ class NewsletterSchedulerTest extends MailPoetTest {
); );
Scheduler::scheduleWPUserWelcomeNotification( Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10, $subscriber_id = 10,
$wp_user = (object)array('roles' => array('editor')), $wp_user = array('roles' => array('editor')),
$old_user_data = (object)array('roles' => array('editor')) $old_user_data = array('roles' => array('editor'))
); );
// queue is not created // queue is not created
@@ -245,7 +250,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
); );
Scheduler::scheduleWPUserWelcomeNotification( Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10, $subscriber_id = 10,
$wp_user = (object)array('roles' => array('administrator')) $wp_user = array('roles' => array('administrator'))
); );
// queue is not created // queue is not created
@@ -268,7 +273,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
); );
Scheduler::scheduleWPUserWelcomeNotification( Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10, $subscriber_id = 10,
$wp_user = (object)array('roles' => array('administrator')) $wp_user = array('roles' => array('administrator'))
); );
$current_time = Carbon::createFromTimestamp(current_time('timestamp')); $current_time = Carbon::createFromTimestamp(current_time('timestamp'));
@@ -293,7 +298,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
); );
Scheduler::scheduleWPUserWelcomeNotification( Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10, $subscriber_id = 10,
$wp_user = (object)array('roles' => array('administrator')) $wp_user = array('roles' => array('administrator'))
); );
$current_time = Carbon::createFromTimestamp(current_time('timestamp')); $current_time = Carbon::createFromTimestamp(current_time('timestamp'));