From 0314e8a24c7e2130d0dd67bb62584002d813abca Mon Sep 17 00:00:00 2001 From: "jack.coggin" Date: Tue, 26 Sep 2023 10:44:52 +0100 Subject: [PATCH 1/2] additional fix for continue training nudge mail scope --- app/models/user.rb | 8 +++++--- spec/jobs/continue_training_mail_job_spec.rb | 14 +++++++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index cd2437fb0..c473bb527 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -84,15 +84,17 @@ def self.dashboard_headers # visits scope :with_visits, -> { joins(:visits) } - scope :visits_this_month, -> { with_visits.merge(Ahoy::Visit.within_4_weeks).distinct } - scope :no_visits_this_month, -> { where.not(id: visits_this_month) } + scope :visits_within_month, -> { with_visits.merge(Ahoy::Visit.within_4_weeks).distinct } + scope :month_old_visits, -> { with_visits.merge(Ahoy::Visit.month_old).distinct } + scope :no_visits_this_month, -> { where.not(id: visits_within_month) } + scope :last_visit_4_weeks_ago, -> { where(id: month_old_visits).where.not(id: visits_within_month) } # emails scope :training_email_recipients, -> { where(training_emails: [true, nil]) } scope :early_years_email_recipients, -> { where(early_years_emails: true) } scope :start_training_mail_job_recipients, -> { order(:id).training_email_recipients.month_old_confirmation.registration_complete.not_started_training } scope :complete_registration_mail_job_recipients, -> { order(:id).training_email_recipients.month_old_confirmation.registration_incomplete } - scope :continue_training_mail_job_recipients, -> { order(:id).training_email_recipients.no_visits_this_month.distinct(&:course_in_progress?) } + scope :continue_training_mail_job_recipients, -> { order(:id).training_email_recipients.last_visit_4_weeks_ago.distinct(&:course_in_progress?) } scope :new_module_mail_job_recipients, -> { order(:id).training_email_recipients.completed_available_modules.to_a } # data diff --git a/spec/jobs/continue_training_mail_job_spec.rb b/spec/jobs/continue_training_mail_job_spec.rb index 376f8c1fb..2c3352014 100644 --- a/spec/jobs/continue_training_mail_job_spec.rb +++ b/spec/jobs/continue_training_mail_job_spec.rb @@ -13,8 +13,14 @@ module_time_to_completion: { alpha: 0 } end + let(:user_3) do + create :user, :registered, + confirmed_at: 4.weeks.ago, + module_time_to_completion: { alpha: 0 } + end + let(:included) { [user] } - let(:excluded) { [user_2] } + let(:excluded) { [user_2, user_3] } # Must have started, but not completed training. # Must be 4 weeks since their last visit @@ -38,6 +44,12 @@ user_id: user_2.id, started_at: 2.weeks.ago + create :visit, + id: 10, + visitor_token: '456', + user_id: user_3.id, + started_at: 5.weeks.ago + # Travel to 4 weeks ago so that the module start event won't count as a recent visit travel_to 4.weeks.ago start_module(alpha) From 4dc3ab27aa5589a25cb3d03e1acca848d823107b Mon Sep 17 00:00:00 2001 From: "jack.coggin" Date: Tue, 26 Sep 2023 11:10:25 +0100 Subject: [PATCH 2/2] fix user_overview spec --- spec/models/data/user_overview_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/data/user_overview_spec.rb b/spec/models/data/user_overview_spec.rb index 0439b67ba..a7df0f8db 100644 --- a/spec/models/data/user_overview_spec.rb +++ b/spec/models/data/user_overview_spec.rb @@ -56,7 +56,7 @@ without_notes_percentage: 0.6, complete_registration_mail_recipients: 1, start_training_mail_recipients: 1, - continue_training_mail_recipients: 4, + continue_training_mail_recipients: 0, new_module_mail_recipients: 1, }, ]