Skip to content

Commit

Permalink
Merge pull request #862 from DFE-Digital/further-fix-mail-job-scope
Browse files Browse the repository at this point in the history
additional fix for continue training nudge mail scope
  • Loading branch information
jack-coggin authored Sep 29, 2023
2 parents 3f7cc1f + 5e86650 commit 872eb77
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
8 changes: 5 additions & 3 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
14 changes: 13 additions & 1 deletion spec/jobs/continue_training_mail_job_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion spec/models/data/user_overview_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
]
Expand Down

0 comments on commit 872eb77

Please sign in to comment.