From f7955406cccca686da6e13926de1fd97b64bd855 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 29 Dec 2014 15:16:08 -0500 Subject: [PATCH] As an optimization, don't return suspended users in the query that determines who to send digests to. --- app/jobs/scheduled/enqueue_digest_emails.rb | 1 + spec/jobs/enqueue_digest_emails_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/app/jobs/scheduled/enqueue_digest_emails.rb b/app/jobs/scheduled/enqueue_digest_emails.rb index e99fe35b7aa..9fc56699807 100644 --- a/app/jobs/scheduled/enqueue_digest_emails.rb +++ b/app/jobs/scheduled/enqueue_digest_emails.rb @@ -14,6 +14,7 @@ module Jobs # Users who want to receive emails and haven't been emailed in the last day query = User.real .where(email_digests: true, active: true) + .not_suspended .where("COALESCE(last_emailed_at, '2010-01-01') <= CURRENT_TIMESTAMP - ('1 DAY'::INTERVAL * digest_after_days)") .where("(COALESCE(last_seen_at, '2010-01-01') <= CURRENT_TIMESTAMP - ('1 DAY'::INTERVAL * digest_after_days)) OR email_always") diff --git a/spec/jobs/enqueue_digest_emails_spec.rb b/spec/jobs/enqueue_digest_emails_spec.rb index e27aa9922ac..27eb3cae10c 100644 --- a/spec/jobs/enqueue_digest_emails_spec.rb +++ b/spec/jobs/enqueue_digest_emails_spec.rb @@ -49,6 +49,14 @@ describe Jobs::EnqueueDigestEmails do end end + context "suspended user" do + let!(:suspended_user) { Fabricate(:user, suspended_till: 1.week.from_now, suspended_at: 1.day.ago) } + + it "doesn't return users who are suspended" do + Jobs::EnqueueDigestEmails.new.target_user_ids.include?(suspended_user.id).should == false + end + end + context 'visited the site this week' do let(:user_visited_this_week) { Fabricate(:active_user, last_seen_at: 6.days.ago) } let(:user_visited_this_week_email_always) { Fabricate(:active_user, last_seen_at: 6.days.ago, email_always: true) }